1.特殊参数
$# 获取脚本传参的个数
$* 和 $@ 表示参数列表中的所有参数
$? 用来获取上一个命令的退出状态,或者上一个函数的返回值
${#str} 获取字符串长度
1.
2.当位置参数数字大于9,要用括号括起来。
[kiosk@foundation60 ]$ echo \${1..15}
$1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15
[kiosk@foundation60 ]$ cat 02.sh
#!/bin/bash
echo $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} ${11} ${12} ${13} ${14} ${15}
[kiosk@foundation60 ]$ sh 02.sh {a..z}
a b c d e f g h i j k l m n o
3.$0
获取脚本的名称及路径。若不带路径执行脚本,输出结果就是脚本的名字;若使用全路径执行脚本,输出结果就是全路径加上脚本的名字。
4.$#获取脚本传参的个数
5.$* 和 $@
$*和$@的区别:
在linux shell中,$*和$@都是表示参数列表中的所有参数
但是当
$*
和$@
被双引号(" ")包含时,"$*"
会将所有的参数作为一个整体,以"$1 $2 $3 $4 ..."
的形式输出所有的参数;"$@"
会将各个参数分开,以"$1" "$2" "$3"...
的形式输出所有参数
6.$?用来获取上一个命令的退出状态,或者上一个函数的返回值。
2.Shell字符串
1.${#str}获取字符串长度
2.字符串拼接
规则:
str1=$a$b #中间不能有空客
str2="$a $b" #有"" 时,中间可以有间隔
str3="$a":"$b" #可以加其他字符
str4="${a}xixi":"${b}haha" #不加{}得话,解释器识别会出错
3.字符串的截取:
<1>从左边开始截取:
${string: start: length}
#string表示截取的字符串
#start表示开始截取的位置
#length表示截取的长度
<2>从右边截取:${string: 0-start :length}
如图:
<3>从指定位置截取:
1.截取右边字符串(遇到第一个匹配的字符就结束):${string#*chars}
#string表示要截取的字符
#chars是指的字符
#*是通配符的一种,表示任意长度的字符串
#*chars连起来使用的意思是:忽略左边的所有字符,直到遇见chars(chars不会截取)
2.直到最后一个指定字符再匹配结束,可以使用##:${string##*chars}