Shell脚本day3~echo命令/数组/传递参数/基本运算符/流程控制(上)

简介: Shell脚本day3~echo命令/数组/传递参数/基本运算符/流程控制

一、echo命令



  • 1.1、显示普通字符串


#!/bin/bash
echo "iPhoneX 标配 8388"
  • 1.2、显示转义字符


#!/bin/bash
echo "  " iPhoneX 顶配 9688 "  "
  • 1.3、显示变量


#!/bin/bash
iphone="iPhoneX"
echo "${iphone} 9688"
  • 1.4、显示换行


#!/bin/bash
# 错误写法
echo "iPhoneX \n hello未来"
# 正确写法(-e:表示开启转义功能)
echo -e "iPhoneX \n hello未来"
  • 1.5、不换行:打印结果是:iPhoneX hello未来 科技


# 注意:"-e"开启转义功能,"\c"表示不换行
#!/bin/bash
echo -e "iPhoneX hello未来 \c "
echo "科技"
  • 1.6、显示一个执行命令:执行结果:2019年 6月 9日 星期日 16时29分24秒 CST


# 要求:输出当前时间,还有很多命令,后面学习一些
#!/bin/bash
echo `date`

提示:date两边的是 斜着的符号

  • 1.7、退出命令语法:exit 状态->退出程序
  • 写法一


#!/bin/bash
iphone="404报错童鞋,买了一台iPhoneX,非常不好,出bug"
echo ${iphone}
exit
echo "你完蛋了,买了假货"
  • 写法二


#!/bin/bash
iphone="404找不到错误"
echo ${iphone}
exit 0  
age=100
if(age > 100){
  exit 1
}


退出的状态码


image.png


二:Shell脚本语言-数组


  • 2.1、语法:数组名=(值一,值二,值三)
  • 2.2、初始化数组:
    方式一:打印结果:老大


#!/bin/bash
name=("老大" "刘二" "王三" "李四")
#输出
echo $name
#默认:打印第一个元素
  • 方式二:打印结果:老大 刘二


#!/bin/bash
name=()
name[0]="老大"
name[1]="刘二"
name[2]="王三"
name[3]="李四"
echo ${name[0]}  ${name[1]}
  • 2.3、读取数组
    语法结构:${数组名[下标]}


#!/bin/bash   
name=("老大" "刘二" "王三" "李四")
#输出一个元素       
echo ${name[0]}
#输出所有->"@"表示输出所有的数据
echo ${name[@]}


"@"表示输出所有的数据

  • 2.4、数组长度
  • 方式一:获取数组元素个数,打印结果:4
    语法:${#数组名[@]}


#!/bin/bash
name=("老大" "刘二" "王三" "李四")
echo ${#name[@]}
  • 方式二:获取数组元素个数,打印结果:4
    语法:${#数组名[*]}


name=("老大" "刘二" "王三" "李四")
echo ${#name[*]}
  • 方式三:获取单个元素->字符长度,打印结果:2
    语法:${#数组名[下标]}


name=("老大" "刘二" "王三" "李四")
echo ${#name[0]}


三:Shell脚本语言-传递参数


  • 3.1、语法定义?


./文件名称.sh 参数1 参数2 参数3...
  • 3.2、案例,脚本内容如下:


#${0}->表示文件名称
#${1}->表示参数1
#${2}->表示参数2
echo ${0} ${1} ${2}
  • 执行脚本代码:


./hello.sh "哈哈" "嘿嘿"
  • 3.3、特殊字符
  • <1>、 $#:获得脚本输入参数个数,脚本内容如下:


echo ${#}
  • 执行脚本代码:


./hello.sh "逗你玩" "饿到爆"
  • 执行脚本结果:2
  • <2>、$*:显示整个脚本输入参数列表,脚本内容如下:


echo ${*}
  • 执行脚本代码:


./hello.sh "逗你玩" "饿到爆"
  • 执行脚本结果:"逗你玩" "饿到爆"


四:Shell脚本语言-基本运算符



  • 4.1、算数运算符
  • <1>、+ 加运算,注意:expr 规定命令,结果是 10


a=1
b=9
c=`expr $a + $b`
echo "c的值:$c"
  • <2>、- 减运算,注意:expr 规定命令,结果是 6
a=8
b=2
c=`expr $a - $b`
echo "c的值:$c"
  • <3>、* 乘运算,注意:expr 规定命令,注意: * 要加一个转义符号 \,结果是 18


a=2
b=9
c=`expr $a \* $b`
echo "c的值:$c"
  • <4>、/ 除运算,注意:expr 规定命令,结果是 4


a=8
b=2
c=`expr $a / $b`
echo "c的值:$c"
  • <5>、% 求余运算,注意:expr 规定命令,结果是 2


a=8
b=3
c=`expr $a % $b`
echo "c的值:$c"
  • <6>、= 赋值运算,注意:expr 规定命令,结果是 8


a=8
b=$a
echo "b的值:$b"
  • <7>、== 等于判断运算,注意:expr 规定命令,结果是:a不等于b


a=8
b=9
if [ $a == $b ]
then
echo "a等于b"
else
echo "a不等于b"
fi
  • 4.2、关系运算符
  • <1>、-eq(equal:相等):检测两个数是否相等,当等返回true,结果是:a不等于b


a=100
b=200
if [ $a -eq $b ]
then
  echo "a等于b"
else
  echo "a不等于b"
fi
  • <2>、-ne(not equal:不等):检测两个数是否相等,不相等返回 true,结果是:a不等于b


a=100
b=200
if [ $a -ne $b ]
then
  echo "a不等于b"
else
  echo "a等于b"
fi
  • <3>、-gt(greater than:大于):检测左边数是否大于右边数,如果是,返回true,结果是:a小于b


a=100
b=200
if [ $a -gt $b ]
then
echo "a大于b"
else
echo "a小于b"
fi
  • <4>、-lt(less than:小于):检测左边数是否小于右边数,如果是,返回true,结果是:a小于b


a=100
b=200
if [ $a -lt $b ]
then
echo "a小于b"
else
echo "a大于b"
fi
  • <5>、-ge(greater than or equal:大于或等于):检测左边数是否(大于+等于)右边数,如果是,返回true,结果是:a小于b


a=100
b=200
if [ $a -ge $b ]
then
echo "a大于等于b"
else
echo "a小于b"
fi
  • <6>、-le(less than or equal:小于或等于):检测左边数是否(小于+等于)右边数,如果是,返回true,结果是:a小于等于b


a=100
b=200
if [ $a -le $b ]
then
echo "a小于等于b"
else
echo "a大于b"
fi
  • 4.3、布尔运算符
  • <1> !:非运算,表达式为true,返回true,否则返回false


a=100
b=200
if [ $a != $b ]
then
   echo "a不等于b"
fi
  • <2> 、-o:或运算,有一个表达式为true,则返回true


a=100
b=200
if [ $a -lt 200 -o $b -gt 200 ]
then
   echo "成立"
fi
  • <3> 、-a:与运算,两个表达式为true,则返回true,结果不成立


a=100
b=200
if [ $a -lt 200 -a $b -gt 200 ]
then
    echo "成立"
else
    echo "不成立"
fi
  • 4.4、逻辑运算符
  • <1> 、&&:逻辑且->and,结果:不成立


a=100
b=200
if [ $a -lt 200 ] && [ $b -gt 200 ]
then
echo "成立"
else
echo "不成立"
fi
  • <2> 、||:逻辑 OR,结果:成立


a=100
b=200
if [ $a -lt 200 ] || [ $b -gt 200 ]
then
echo "成立"
else
echo "不成立"
fi
  • 4.5、字符串运算
  • <1>、=:检测两个字符串是否相等,如果相等返回true


a="HR"
b="iOS"
if [ $a = $b ]
then
echo "字符串a等于字符串b"
else
echo "字符串a不等于字符串b"
fi
  • <2>、!=:检测两个字符串是否相等,如果不相等返回true


a="HR"
b="iOS"
if [ $a != $b ]
then
echo "字符串a不等于字符串b"
else
echo "字符串a等于字符串b"
fi
  • <3>、-z:检测字符串长度是否为0,如果是返回true,结果:a不存在值


a="iOS"
if [ -z $a ]
then
echo "a为空,不存在值"
else
echo "a存在值"
fi
  • <4>、-n:检测字符串长度是否为0,如果不是0,返回true


a="iOS"
if [ -n "$a" ]
then
echo "a存在"
else
echo "a不存在值"
fi

提示:在使用 -n 的时候, 变量a要这样写 "$a"

  • <5>、字符串:检测字符串是否为空,不为空返回true


a="JAR"
if [ $a ]
then
    echo "a不为空"
else
    echo "a为空"
fi
  • 4.6、文件测试运算符file="/Users/wangchong/Desktop/opencv知识/array.sh"
  • <1>、-d file:检测文件是不是一个目录,如果是,那么返回true,结果是:不是一个目录


if [ -d $file ]
then
echo "是一个目录"
else
echo "不是一个目录"
fi
  • <2>、-r file:检测文件是否可读,如果是,那么返回true


if [ -r $file ]
then
echo "可读"
else
echo "不可读"
fi
  • <3>、-w file:检测文件是否可写,如果是,那么返回true


if [ -w $file ]
then
echo "可写"
else
echo "不可写"
fi
  • <4>、-x file:检测文件是否是可执行文件,如果是,那么返回true


if [ -x $file ]
then
echo "可执行"
else
echo "不可执行"
fi
  • <5>、-f file:检测文件是否是一个普通文件(既不是目录,也不是设备文件),如果是,那么返回true


if [ -f $file ]
then
echo "文件为普通文件"
else
echo "文件为特殊文件"
fi
  • <6>、-s file:检测文件是否为空(文件有内容),如果是,那么返回true


if [ -s $file ]
then
echo "文件有内容"
else
echo "文件没有内容"
fi
  • <7>、-e file:检测文件是否存在(包含了:目录和文件),如果是,那么返回true


if [ -e $file ]
then
echo "存在"
else
echo "不存在"
fi


目录
相关文章
|
10月前
|
存储 安全 Unix
七、Linux Shell 与脚本基础
别再一遍遍地敲重复的命令了,把它们写进Shell脚本,就能一键搞定。脚本本质上就是个存着一堆命令的文本文件,但要让它“活”起来,有几个关键点:文件开头最好用#!/usr/bin/env bash来指定解释器,并用chmod +x给它执行权限。执行时也有讲究:./script.sh是在一个新“房间”(子Shell)里跑,不影响你;而source script.sh是在当前“房间”里跑,适合用来加载环境变量和配置文件。
886 9
|
10月前
|
存储 Shell Linux
八、Linux Shell 脚本:变量与字符串
Shell脚本里的变量就像一个个贴着标签的“箱子”。装东西(赋值)时,=两边千万不能有空格。用单引号''装进去的东西会原封不动,用双引号""则会让里面的$变量先“变身”再装箱。默认箱子只能在当前“房间”(Shell进程)用,想让隔壁房间(子进程)也能看到,就得给箱子盖个export的“出口”戳。此外,Shell还自带了$?(上条命令的成绩单)和$1(别人递进来的第一个包裹)等许多特殊箱子,非常有用。
958 2
|
10月前
|
数据采集 监控 Shell
无需Python:Shell脚本如何成为你的自动化爬虫引擎?
Shell脚本利用curl/wget发起请求,结合文本处理工具构建轻量级爬虫,支持并行加速、定时任务、增量抓取及分布式部署。通过随机UA、异常重试等优化提升稳定性,适用于日志监控、价格追踪等场景。相比Python,具备启动快、资源占用低的优势,适合嵌入式或老旧服务器环境,复杂任务可结合Python实现混合编程。
|
Web App开发 缓存 安全
Linux一键清理系统垃圾:释放30GB空间的Shell脚本实战​
这篇博客介绍了一个实用的Linux系统盘清理脚本,主要功能包括: 安全权限检查和旧内核清理,保留当前使用内核 7天以上日志文件清理和系统日志压缩 浏览器缓存(Chrome/Firefox)、APT缓存、临时文件清理 智能清理Snap旧版本和Docker无用数据 提供磁盘空间使用前后对比和大文件查找功能 脚本采用交互式设计确保安全性,适合定期维护开发环境、服务器和个人电脑。文章详细解析了脚本的关键功能代码,并给出了使用建议。完整脚本已开源,用户可根据需求自定义调整清理策略。
1288 1
|
Shell 开发工具
shell编程之流程控制判断
一、shell判断-if 1.if判断基本概述 1.什么是if? If就是模仿人类的判断来进行的,但他没有人类那么有情感,只有True和false这两种结果。 2.为什么要使用if 当我们在写程序的时候,是否经常需要对上一步执行结果进行判断。那么判断就需要用if语句来实现。 3.if的基础语法 1.单分支语法 if [ $1 -eq $2];then echo “ok” fi 2.双分支结构 if [ $1 -eq $2 ];then echo “ok” else echo “error” fi 3.多分支结构###如果上面的匹配成功就不会继续向下匹配 if [ 如果你有房 ];then
422 0
|
关系型数据库 MySQL Shell
MySQL 备份 Shell 脚本:支持远程同步与阿里云 OSS 备份
一款自动化 MySQL 备份 Shell 脚本,支持本地存储、远程服务器同步(SSH+rsync)、阿里云 OSS 备份,并自动清理过期备份。适用于数据库管理员和开发者,帮助确保数据安全。
|
Shell
Shell脚本循环控制:shift、continue、break、exit指令
使用这些命令可以让你的Shell脚本像有生命一样动起来。正确使用它们,你的脚本就能像一场精心编排的舞蹈剧目,既有旋律的起伏,也有节奏的跳跃,最终以一场惊艳的表演结束。每一个动作、每一个转折点,都准确、优雅地完成所需要表达的逻辑。如此,你的脚本不只是冰冷的代码,它透过终端的界面,跳着有节奏的舞蹈,走进观众——使用者的心中。
422 60
|
Shell
一个用于添加/删除定时任务的shell脚本
一个用于添加/删除定时任务的shell脚本
482 1
|
存储 Unix Shell
确定Shell脚本在操作系统中的具体位置方法。
这对于掌握Linux的文件系统组织结构和路径方面的理解很有帮助,是我们日常工作和学习中都可能使用到的知识。以上讲解详细清晰,应用简便,是每一个想要精通操作系统的计算机爱好者必备的实用技能。
740 17
|
Linux Shell
在Linux、CentOS7中设置shell脚本开机自启动服务
以上就是在CentOS 7中设置shell脚本开机自启动服务的全部步骤。希望这个指南能帮助你更好地管理你的Linux系统。
2302 25