[shell]特殊变量汇总

时间:2023-01-07 15:38:13

系统变量:

$# 参数个数
$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
   
[shell]特殊变量汇总


[shell]特殊变量汇总



自定义变量

# 自定义变量“=”前后不能有空格
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的子串

子串的变量扩展


${变量%模式} 将变量值的尾部与模式进行最小匹配,并将匹配到的部分删除
${变量%%模式} 将变量值的尾部与模式进行最大匹配,并将匹配到的部分删除
${变量#模式} 将变量值的头部与模式进行最小匹配,并将匹配到的部分删除
${变量##模式} 将变量值的头部与模式进行最大匹配,并将匹配到的部分删除
${#变量} 替换为变量中的字符个数。如果是*@,长度则是位置参量的个数