日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

变量置换方式linux,Shell变量测试与内容置换

發布時間:2025/5/22 linux 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 变量置换方式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变量测试与内容置换的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。