var=${str:=expr}
str=expr
var=expr
str=expr
var=expr
str
不变
var=$str
var=${str.expr}
expr
输出至
stderr
var=
var=$str
var=${str:.expr}
expr
输出至
stderr
expr
输出至
stderr
var=$str
根据上面这张表,我们来½行几个范例的练习吧!
^_^
!首先让我们来测试一下,如果旧变量
(str)
存在时,
我们要给予新变量一个内容,若旧变量存在则新变量内容以旧变量来替换,½果如下:
测试
:先假
str
不存在
(
unset)
,然后
测试
一下
减号
(
-
)
的用法:
[dmtsai@study ~]$
unset str; var=${str
-
newvar}
[dmtsai@study ~]$
echo "var=${var}, str=${str}"
var=newvar, str=
<==
str
不存在,所以
var
newvar
测试
:若
str
已存在,
测试
一下
var
会变
?:
[dmtsai@study ~]$
str="oldvar"; var=${str
-
newvar}
[dmtsai@study ~]$
echo "var=${var}, str=${str}"
var=oldvar, str=oldvar
<
==
str
存在,所以
var
等于
str
关于减号
(-)
其实上面我们谈过了!这里的测试只是要让你更加了½,这个减号的测试并不会影响到
旧变量的内容。
如果你想要½旧变量内容也一起替换掉的话,那么就使用等号
(=)
吧!
测试
:先假
str
不存在
(
unset)
,然后
测试
一下等
(=)
的用法:
[dmtsai@study ~]$
unset str; var=${str=newvar}
[dmtsai@study ~]$
echo "var=${var},
str=${str}"
var=newvar, str=newvar
<==
str
不存在,所以
var/str
newvar
测试
:如果
str
已存在了,
测试
一下
var
会变
[dmtsai@study ~]$
str="oldvar"; var=${str=newvar}
[dmtsai@study ~]$
echo "var=${var}, str=${str}"
var=oldvar, str=oldvar
<==
str
存在,所以
var
等于
str
那如果我只是想知道,如果旧变量不存在时,整个测试就告知我『有错误』,此时就能够使用问号『
.
的帮忙啦!
底下这个测试练习一下先!
测试
:若
str
不存在
var
测试½
果直½
"
"
[dmtsai@study ~]$
unset str; var=${str.
变数
}
-
bash: str:
<==
str
不存在,所以
错误讯
测试
:若
str
存在
var
str
相同!
[dmtsai@study ~]$
str="oldvar"; var=${str.novar}
[dmtsai@study ~]$
echo "var=${var}, str=${str}"