变量置换方式linux,Shell变量测试与内容置换
在腳本中,有時需要判斷變量是否存在或是否被賦予了值,如果變量已經存在并且被賦予了值,則不改變變量;如果變量不存在或沒有被賦值,則賦予其新值。這時我們就可以使用變量測試與內容置換。
我們在腳本中可以使用條件判斷語句 if 來替代這種測試方法,不過使用 Shell 自帶的變量置換更加方便,但是這種方法容易記混,我們通過表 1 來進行說明。
表 1 變量測試與內容置換
變量置換方式
變量y沒有設置
變量y為空值
變量y設置值
x=${y-新值}
x= 新值
x 為空
x=$y
x=${y:-新值}
x= 新值
x= 新值
x=$y
x=${y+新值}
x 為空
x= 新值
x=新值
x=${y:+新值}
x 為空
x 為空
x=新值
x=${y=新值}
x= 新值
x 為空
x=$y
y= 新值
y 值不變
y值不變
x=${y:=新值}
x= 新值
X= 新值
x=$y
y= 新值
y= 新值
y值不變
x=${y?新值}
新值輸出到標準錯誤輸出(屏幕)
x 為空
x=$y
x=${y:?新值}
新值輸出到標準錯誤輸出
新值輸出到標準錯誤輸出
x=$y
如果大括號內沒有":",則變量 y 為空或沒有被設置,處理方法是不同的;如果大括號內有":",則變量 y 不論是為空,還是沒有被設置,處理方法是一樣的。
如果大括號內是"-"或"+",則在改變變量 x 的值的時候,變量 y 的值是不改變的;如果大括號內是"=",則在改變變量 x 的值的同時,變量 y 的值也會改變。
如果大括號內是"?",則當變量 y 不存在或為空時,會把"新值"當成報錯輸出到屏幕上。
【例 1】
[root@localhost ~]# unset y
#刪除變量y
[root@localhost ~]# x=${y-new}
#進行測試
[root@localhost ~]# echo $x
new
#因為變量y不存在,所以x=new
[root@localhost ~]# echo $y
#變量y還是不存在的
和表 1 對比一下,是不是可以看懂了?這是變量 y 不存在的情況,如果變量 y 為空呢?
[root@localhost ~]#y=""
#給變量y賦值為空
[root@localhost ~]#x=${y-new}
#進行測試
[root@localhost ~]# echo $x
[root@localhost ~]# echo $y
#變量x和y都為空
如果變量y有值呢?
[root@localhost ~]#y=old
#給變量y賦值
[root@localhost ~]# x=${y-new}
#進行測試
[root@localhost ~]# echo $x
old
[root@localhost ~]# echo $y
old
#變量x和y的值都是old
【例2】
如果大括號內是"=",則又是什么情況呢?先測試一下變量 y 沒有被設置的情況,如下:
[root@localhost ~]# unset y
#刪除變量y
[root@localhost ~]# x=${y:=new}
#進行測試
[root@localhost ~]# echo $x
new
[root@localhost ~]# echo $y
new
#變量x和y的值都是new
一旦使用了"=",那么會同時處理變量 x 和 y,而不像例 1 那樣只改變變量 x 的值。如果變量 y 為空,則又是什么情況呢?
[root@localhost ~]#y=""
#設定變量y為空
[root@localhost ~]#x=${y:=new}
#進行測試
[root@localhost ~]# echo $x
new
[root@localhost ~]# echo $y
new
#變量x和y的值都是new
一旦在大括號中使用":",那么變量 y 為空或者沒有被設置,處理方法是一樣的。如果變量 y 已經被賦值 了,則又是什么情況?
[root@localhost ~]# y=old
#給變量y賦值
[root@localhost ~]#x=${y:=new}
#進行測試
[root@localhost ~]# echo $x
old
[root@localhost ~]# echo $y
old
#變量x和y的值都是old
【例3】
再測試一下大括號中是"?"的情況。
[root@localhost ~]# unset y
#刪除變量y
[root@localhost ~]#x=${y?new}
-bash: y: new
#會把值"new"輸出到屏幕上
如果變量 y 已經被賦值了呢?
[root@localhost ~]# y=old
#給變量y賦值
[root@@localhost ~]# x=${y?new}
#進行測試
[root@localhost ~]# echo $x
old
[root@localhost ~]# echo $y
old
#變量x和y的值都是old
這些內容實在讓人頭疼啊,如果在腳本中用到了,則參考表 1 即可。
總結
以上是生活随笔為你收集整理的变量置换方式linux,Shell变量测试与内容置换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 查看linux安装redis的位置,li
- 下一篇: linux同时链接多个库,通过Shell