bash 对${}定义了不少用法。对变量的操作及判断是一个十分有用的工具,应好好学习一下,以下是说明的表列
变量的删除
${parameter#word}
${parameter##word}
${parameter%word}
${parameter%%word}
变量的提取
${parameter:offset}
${parameter:offset:length}
变量的替换
${parameter/pattern/string}
${parameter//pattern/string}
变量的删除、提取、替换
-
[root@awake ~]# file=/dir1/dir2/dir3/my.file.txt //定义一个变量
-
[root@awake ~]# echo $file //显示定义的变量
-
/dir1/dir2/dir3/my.file.txt
-
[root@awake ~]# echo ${file#*/} //删除/和/左边的字符串,最短匹配的
-
dir1/dir2/dir3/my.file.txt
-
[root@awake ~]# echo ${file##*/} //删除/和/左边的字符串,最长匹配的
-
my.file.txt
-
[root@awake ~]# echo ${file%/*} //删除/和右边的字符串,最短匹配
-
/dir1/dir2/dir3
-
[root@awake ~]# echo ${file%%/*} //删除/和右边的字符串,最长匹配,全部删除完了,因此为空置
-
-
[root@awake ~]# echo ${file:5}
-
/dir2/dir3/my.file.txt //提取 这个不知如何解释,没查到
-
[root@awake ~]# echo ${file:0:5} //提取第5个字节左边的5个 这个不知如何解释,没查到
-
/dir1
-
[root@awake ~]# echo ${file:5:6} //提取第5个字节的右边6个字节
-
/dir2/
-
[root@awake ~]# echo ${file/dir/path} //用path替换最左边的dir,其中/应该是参考符,如果没有/的变量内容应该如何替换?
-
/path1/dir2/dir3/my.file.txt
-
[root@awake ~]# echo ${file//dir/path} //用path替换全部的dir
-
/path1/path2/path3/my.file.txt
-
[root@awake ~]#
-
利用
${ } 还可针对不同的变数状态(没设定、空值、非空值)赋值:
${parameter-word}
${parameter:-word}
${parameter:=word}
${parameter:?word} 当parameter指示的参数没有被设值的时候,将会通过标准错误的方式显示word中的语句。
${parameter:+word}
${!prefix*}
${#parameter}
${#var} 可计算出变量值的长度:
${#file} 可得到 27 ,因为/dir1/dir2/dir3/my.file.txt 是27个字节
如果old变量为未设定或叫不存在,那么将new=content
-
[root@awake ~]# unset new old
-
[root@awake ~]# echo ${old-content}
-
content
-
[root@awake ~]# new=${old-content}
-
[root@awake ~]# echo new=$new,old=$old
-
new=content,old=
如果old变量为空字符串,那么将new=空
-
[root@awake ~]# unset old new
-
[root@awake ~]# old=""
-
[root@awake ~]# new=${old-content}
-
[root@awake ~]# echo new=$new,old=$old
-
new=,old=
-
[root@awake ~]#
如果old变量为非空字符串,那么new=$old
[root@awake ~]# unset old new
-
[root@awake ~]# old=old
-
[root@awake ~]# new=${old-content}
-
[root@awake ~]# echo new=$new,old=$old
-
new=old,old=old
-
[root@awake ~]#
总结及其他字符整理
变量设置方式
|
old没有设置
|
old为空字符串
|
old已设置为非空字符串
|
new=${old-content}
|
new=content
|
new=
|
new=$old
|
new=${old:-content}
|
new=content
|
new=content
|
new=$old
|
new=${old+content}
|
new=
|
new=content
|
new=content
|
new=${old:+content}
|
new=
|
new=
|
new=content
|
new=${old=content}
|
old=content
new=content
|
old不变
new=
|
old不变
new=$old
|
new=${old:=}
|
old=content
new=content
|
old=content
new=content
|
old不变
new=$old
|
new=${old?content}
|
content输出至stderr
|
new=
|
var=$str
|
new=${old:?content}
|
content输出至stderr
|
content输出至stderr
|
var=$str
|
阅读(820) | 评论(0) | 转发(0) |