系统变量:
$# | 参数个数 |
$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的子串 |
子串的变量扩展
${变量%模式} | 将变量值的尾部与模式进行最小匹配,并将匹配到的部分删除 |
${变量%%模式} | 将变量值的尾部与模式进行最大匹配,并将匹配到的部分删除 |
${变量#模式} | 将变量值的头部与模式进行最小匹配,并将匹配到的部分删除 |
${变量##模式} | 将变量值的头部与模式进行最大匹配,并将匹配到的部分删除 |
${#变量} | 替换为变量中的字符个数。如果是*或@,长度则是位置参量的个数 |