系统变量:
$# |
参数个数 |
$0 |
程序的名称 |
$1 |
传给函数的第1个参数 |
$2 |
传给函数的第2个参数 |
$3 |
传给函数的第3个参数 |
... |
|
$9 |
传给函数的第9个参数,9往后的必须将数字{}起来 |
${10} |
传给函数的第10个参数 |
${11} |
传给函数的第11个参数 |
... |
... |
$n |
传给函数的第n个参数 |
$? |
函数或者程序正常退出返回0,否则返回1 |
$* |
传递给程序的所有参数组成的字符串 |
$@ |
函数的参数顺序保存的字符串 |
$$ |
本程序进程ID |
$! |
上一个程序进程ID |
$(seq 10) |
1 2 3 4 5 6 7 8 9 10 |
|
|
自定义变量
# 自定义变量“=”前后不能有空格
a="hello World"
echo $a
echo "你好!${a}bcde" #此时变量为${a}
#整数的运算
int_a=1
int_b=3
int_c=`expr $int_a + $int_b` #"+"前后有空格
变量修饰符
${variable:-word} |
如果变量variable已被设置且值非空,则代入它的值。否则,代入word |
${variable:=word} |
已被设置且值非空,就代入它的值。否则,将variable的值设为word。始终代入variable的值。位置参量不能用这种方式赋值 |
${variable:+word} |
如果变量variable已被设置且值非空,则代入word的值。否则,什么都不代入(代入空值) |
${variable:?word} |
如果变量variable已被设置且值非空,则代入它的值。否则,输出word并且从shell退出。如果省略了word,就会显示信息:parameter null or not set |
${variable:offset} |
获得变量variable值中位置从offset开始的子串,偏移为从0到串的末尾 19 |
${variable:offset:length} |
获得变量variable值中位置从offset开始长度为length的子串 |
子串的变量扩展
${变量%模式}
|
将变量值的尾部与模式进行最小匹配,并将匹配到的部分删除 |
${变量%%模式}
|
将变量值的尾部与模式进行最大匹配,并将匹配到的部分删除 |
${变量#模式}
|
将变量值的头部与模式进行最小匹配,并将匹配到的部分删除 |
${变量##模式}
|
将变量值的头部与模式进行最大匹配,并将匹配到的部分删除 |
${#变量}
|
替换为变量中的字符个数。如果是*或@,长度则是位置参量的个数
|