1. ${varname:-word} 如果varname存在且非null,则返回其值;否则,返回word。
2. ${varname:=word} 如果varname存在且非null,则返回其值;否则,设置它为word,并返回其值。
3. ${varname:?message} 如果varname存在且非null,则返回其值;否则,显示varname:message,并退出当前的命令或脚本。省略message会出现默认信息parameter null or not set。注意,在交互式Shell下不需要退出(在不同的Shell间会有不同的行为,用户需自行注意)。
4. ${varname:+word} 如果varname存在且非null,则返回word;否则,返回null。
每个运算符内的冒号(:)都是可选的。如果省略冒号,则将每一个定义中的“存在且非null“部分改为”存在“,也就是说,运算符仅用于测试变量是否存在。
5. ${varname#key_word} 如变量内容从头开始的数据符合key_word,则将符合的最短数据删除。
6. ${varname##key_word} 如变量内容从头开始的数据符合key_word,则将符合的最长数据删除。
7. ${varname%key_word} 如变量内容从尾向前的数据符合key_word,则将符合的最短数据删除。
8. ${varname%%key_word} 如变量内容从尾向前的数据符合key_word,则将符合的最长数据删除。
9. ${varname/old_string/new_string} 如变量内容符合old_string则将第一个old_string会被new_string取代。
10. ${varname//old_string/new_string} 如变量内容符合old_string则将全部的old_string会被new_string取代。
11. 命令行参数替换。variable_=$1_ 如果是variable=$1_ 可以用variable=${variable_/_/}删除多的一个下划线。 如果脚本需要一个命令行参数,而调用的时候,没用这个参数,这就有可能造成分配一个空变量,这样估计就会引起问题. 也可以用另外一种方法${1:-$DefaultVal}
Shell脚本特殊变量:
$# 脚本运行时命令行参数的个数。${$#}就代表了最后一个命令行参数变量,是不正确的。因为不能在花括号里面使用美元符,必须将美元符换成感叹号。${!#}表示最后一个命令行参数变量。
$*和$@能够对命令行参数的快速访问。$*将把命令行的所有参数当成一个参数,而不是多个对象。$@将把命令行的参数都当成独立的单词。
IFS: 查看IFS变量的方法。 $echo $IFS | od -b 或者 $set | grep IFS 第一种是通过二进制查看,第二种直接查看IFS变量的值。
阅读(1192) | 评论(0) | 转发(0) |