最近有人问${}里面的参数怎么看不懂呢?
${name:-default}使用一个默认值(一般是空值)来代替那些空的或者没有赋值的变量name;
例子
1,
$ cat var_seq.sh # Print 1 to 4 using sequences. for i in {1..4} do echo $i done start=1 end=4 # Print 1 to 4 using through variables echo "Sequences expressed using variables" for i in {$start..$end} do echo $i done $ ./var_seq.sh 1 2 3 4 Sequences expressed using variables {1..4}
2,
unset name echo ${name:-111}
结果111
name=222
echo ${name:-111}
结果222
${name:=default}使用指定值来代替空的或者没有赋值的变量name;
貌似和上一个一样
3,
$ ksh $ echo /var/log/messages.{1..7..2} /var/log/messages.1 /var/log/messages.3 /var/log/messages.5 /var/log/messages.7 $
${name:?message}如果变量为空或者未赋值,那么就会显示出错误信息并中止脚本的执行同时返回退出码1。
${#name} 给出name的长度
${name%word} 从name的尾部开始删除与word匹配的最小部分,然后返回剩余部分
${name%%word} 从name的尾部开始删除与word匹配的最长部分,然后返回剩余部分
${name#word} 从name的头部开始删除与word匹配的最小部分,然后返回剩余部分
${name##word} 从name的头部开始删除与word匹配的最长部分,然后返回剩余部分
参考:
http://www.thegeekstuff.com/2010/06/bash-shell-brace-expansion/#more-4614
http://www.linuxidc.com/Linux/2011-04/34731.htm