一、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 }
退出的状态码
二: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
