--简单说明 $parameter 是 ${parameter} 的一个简写方式
--前面也提到了 cp $file ${file}_1 把file变量中存的文件(假如名为x)复制一份 放在 x_1文件中
--参数传递的时候 超过9个参数就不能再用$10来接 而是用${10}
${para :- value} --如果变量para为空则显示value 否则显示 para
[xep@localhost ~]$ echo ${test:-555}
555
[xep@localhost ~]$ test=top
[xep@localhost ~]$ echo ${test:-iii}
top
${para := value} --如果变量para为空则把value赋予$para 否则无操作
[xep@localhost ~]$ echo $op
[xep@localhost ~]$ echo ${op:=oprater}
oprater
[xep@localhost ~]$ echo $op
oprater
${para :+ value} --如果para不为空则显示value 否则无操作
[xep@localhost ~]$ echo $op
oprater
[xep@localhost ~]$ echo ${op:+xp}
xp
[xep@localhost ~]$ echo $op
oprater
${para :? value} --当para存在且非空显示$para 否则报错
[xep@localhost ~]$ echo ${ooo:?xp}
ooo
[xep@localhost ~]$ set ooo=
[xep@localhost ~]$ echo $ooo
ooo
[xep@localhost ~]$ ooo=
[xep@localhost ~]$ echo $ooo
[xep@localhost ~]$ echo ${ooo:?xp}
-bash: ooo: xp
${para:offset:length} --从para中截取offset到length的个数 如果没输入length就从offset开始取到最后
[xep@localhost ~]$ echo $op
oprater
[xep@localhost ~]$ echo ${op:2,3}
ater
[xep@localhost ~]$ echo ${op:5}
er
[xep@localhost ~]$ echo $op
oprater
${para#pattern} --从para左边(开始)最小匹配并删除pattern字符
${para##pattern} --从para左边(开始)最大匹配并删除pattern字符 --般与通配符一起使用
${para%pattern} --从para右边(结尾)最小匹配并删除pattern字符
${para%%pattern} --从para右边(结尾)最大匹配并删除pattern字符 --般与通配符一起使用
[xep@localhost ~]$ var=testcase
[xep@localhost ~]$ echo $var
testcase
[xep@localhost ~]$ echo ${var%e} --删除变量var结尾e
testcas
[xep@localhost ~]$ echo ${var} --显示变量var
testcase
[xep@localhost ~]$ echo ${var%s*e} --删除变量var结尾的s..e 最小匹配
testca
[xep@localhost ~]$ echo ${var%e*e} --删除变量var结尾的e..e 最小匹配
t
[xep@localhost ~]$ echo ${var%%s*e} --删除变量var结尾的s..e 最大匹配
te
[xep@localhost ~]$ echo ${var#e} --删除变量var开始的e 无匹配
testcase
[xep@localhost ~]$ echo ${var#?e} --删除变量var第二个字符是e的前两个字符
stcase
[xep@localhost ~]$ echo ${var#*e} --删除变量var从开始到第一个e为止的字符
stcase
[xep@localhost ~]$ echo ${var##*e} --删除变量var中e之前的所有字符
[xep@localhost ~]$ echo ${var##?e} --与 echo ${var#?e}相似
stcase
[xep@localhost ~]$ echo ${var#test} --删除变量var中的以test开始的字符
case
[xep@localhost ~]$ echo ${`ls -l`%%s*p}
-bash: ${`ls -l`%%s*p}: bad substitution
[xep@localhost ~]$ s="ls -l"; echo ${s%%s*p}
ls -l
[xep@localhost ~]$ s=`ls -l`;echo ${s%%s*p}
total 308 -rwxr-xr-x 1 xep xep 96 Oct 30 03:54 add_
${para/string/replace} --将para中的string替换成replace 替换一次
[xep@localhost ~]$ echo ${var/e/s}
tsstcase
[xep@localhost ~]$ echo ${var/tes/s}
stcase
${para//string/replace} --将para中的string替换成replace 全部替换
[xep@localhost ~]$ echo ${var//e/s}
tsstcass
--参数替换是很有用的 如
if [ ${file%.o} != $file ]
then
echo "是以.o结尾的"
fi
echo ${file##*/} --相当于basename命令
[xep@localhost ~]$ echo ${#var} --输出变量var中存的串长度
8