- 说明:定义或赋值,解析器都认为是字符操作,即使定义的变量是数值,除非添加
let
- 示例:
a=1 #a=a+2 #a=$a+2 #let a=a+2 let a+=2 echo $a
字符串类型
- 单引号:其中的字符都会保持原样,变量也不会别解析
- 双引号:其中的变量会解析(替换成变量的值),特殊字符:
$、\、"
- 反引号:其中的内容会作为命令执行
echo `date`
- 长度统计:
echo ${#name}
- 子串提取:
echo ${name:2:3}
,从下标为2的字符开始提取3个
数组类型
- 定义:
a=(1 2 3)
- 成员访问:
echo ${a[1]}
- 所有元素:
echo ${a[*]}
- 统计个数:
echo ${#a[@]}
各种运算
test
:测试真假 if test 1 -lt 2;then echo 'ok' fi if [ 1 -lt 2 ] then echo 'ok' fi
- 数值比较
符号 说明 -lt 小于 -le 小于等于 -gt 大于 -ge 大于等于 -eq 等于 -ne 不等于 - 字符串比较
符号 说明 = 相等 != 不相等 -z 判断字符串长度是否为0 -n 判断字符串长度是否不为0 - 文件判断
符号 说明 -f 是否是普通文件 -d 是否是目录文件 -c 是否是字符设备文件 -b 是否是块设备文件 -r 是否可读 -w 是否可写 -x 是否可执行 -s 文件存在,并且至少有一个字符 - 逻辑运算
符号 说明 -a 逻辑与(and),也可使用&& -o 逻辑或(or),也可以使用|| ! 逻辑非(not) - 示例:
if [ 1 -lt 3 -a 3 -gt 2 ];then echo 'ok' fi if [ 1 -lt 3 ] && [ 3 -gt 2 ];then echo 'ok' fi if [ ! 1 -gt 3 ];then echo 'ok' fi
分之结构
if-elif-else-fi
if [ 1 -gt 2 ];then echo '1 > 2' elif [ 3 -gt 2 ];then echo '3 > 2' else echo 'xxxx' fi
case-in-esac
read -p 'please input a charactor:' ch case $ch in [a-z]) echo 'alpha' ;; [0-9]) echo 'number' ;; *) echo 'others' ;; esac
循环结构
for-in
及for
a=(1 2 3) #for x in ${a[*]} #for x in 11 22 33 #for x in /etc/* #for x in {1..10} for x in `seq 1 10` do echo $x done for ((i=0;i<${#a[@]};i++)) do echo ${a[$i]} done for i in {1..100} do let j+=i done echo $j
while
i=1 while [ $i -le 10 ] do echo $i #let i++ #let i+=1 ((i++)) done
until
i=1 until [ $i -gt 10 ] do echo $i ((i++)) done
- break、continue关键字也可以使用
标签: shell
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~