Shell脚本学习
发表于更新于
字数总计:805阅读时长:2分钟阅读量: 长沙
注释
变量
局部变量:在脚本中定义,只在shell实例中生效
环境变量:也就是当前环境变量
变量操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| name="test"
local name="test"
echo $name echo ${name}
name="only_read" readonly name
unset name
|
字符串变量
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| var='test'
var="my name is ${name}"
name="test" echo ${#name}
name="this is my name" echo ${name:1:4}
|
数组
bash只支持一维数组,不支持多维。
定义数组用小括号作边界,空格分离。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| array_name=(zhangly zhoujl chenyifa)
array_name[2]="yangcl"
echo ${array_name[1]}
echo ${array_name[@]}
echo ${#array_name[@]} 或者 echo ${#array_name}
|
参数传递
获取参数值。
1 2 3 4 5 6 7 8 9 10
| $0 $1 $n
$# $* $@ $$ $! $?
|
算数运算
+
, -
, *
, \
四个运算符,其中乘号必须加\
进行转义。
1 2 3
| val=`expr 2 + 2` val=$[2+2] val=$((2+2))
|
数字关系运算符
只支持数字,不支持字符串。
下面假定变量a为10,变量b为20。
注意语法上需要四个空格。
1 2 3 4 5 6
| -eq: 检测两个数相等,相等返回true。 [ $a -eq $b ] -ne: 检测两个数是否不想等,不想等返回true。 [ $a -ne $b ] -gt: 检测左边的数是否大于右边的,如果是,则返回true。[ $a -gt $b ] -lt: 检测左边的数是否小于右边的,如果是,则返回true。[ $a -lt $b ] -ge: 检测左边的数是否大于等于右边,如果是,则返回true。 [ $a -ge $b ] -le: 检测左边的数是否小于等于右边,如果是,则返回true。 [ $a -le $b ]
|
字符串运算符
1 2 3 4 5
| =: 检测两个字符串是否相等,相等返回true。 [ $a = $b ] !=: 检测两个字符串是否相等,不想等返回true。 [ $a != $b ] -z: 检测字符串长度是否为0,为0返回true。 [ -z $a ] -n: 检测字符串长度是否为0,不为0返回true。 $: 检测字符串是否为空,不为空返回true。
|
布尔运算符
1 2 3
| !: 非运算,返回相反的布尔值。 [!false] -o: 或运算,有一个表达式为true则返回true。 [$a -lt 20 -o $b -gt 100] -a: 与运算,所有表达式都为true则返回true。 [$a -lt 20 -a $b -gt 100]
|
逻辑运算符