測試環境為 Ubuntu 16.04 x64
–
用來判斷變數是否存在,不存在則由後面字串來取代.
變數 Name 已經設定過為 Ben,所以不會被取代.
root@ubuntu:~# Name="Ben" root@ubuntu:~# echo ${Name-NoName} Ben
變數 Name 已經設定過為空字串,所以不會被取代.
root@ubuntu:~# Name="" root@ubuntu:~# echo ${Name-NoName}
變數 Names 沒有設定過,所以會被取代.
root@ubuntu:~# echo ${Names-NoName} NoName
:-
用來判斷變數是否存在,不存在則由後面字串來取代.同 “-” 不同點在於空字串視為不存在.
root@ubuntu:~# Name="" root@ubuntu:~# echo ${Name-NoName} root@ubuntu:~# echo ${Name:-NoName} NoName
+
用來判斷變數是否存在,存在則由後面字串來取代.
變數 Name 已經設定過為 Ben,所以會被取代.
[root@localhost ~]$ Name="Ben" [root@localhost ~]$ echo ${Name+NoName} NoName
變數 Name 已經設定過為空字串,所以會被取代.
[root@localhost ~]$ Name="" [root@localhost ~]$ echo ${Name+NoName} NoName
變數 Names 沒有設定過,所以不會被取代.
[root@localhost ~]$ echo ${Names+NoName}
:+
用來判斷變數是否存在,存在則由後面字串來取代.同 “+” 不同點在於空字串視為不存在.
[root@localhost ~]$ Name="" [root@localhost ~]$ echo ${Name+NoName} NoName [root@localhost ~]$ echo ${Name:+NoName}
=
類似 – (用來判斷變數是否存在,不存在則由後面字串來取代.),但如果變數沒有設定時,變數會被設定成後面的字串.
變數 Name 已經設定過,所以 Firstname 等於 Ben.
[root@localhost ~]$ Name="Ben" [root@localhost ~]$ Firstname=${Name=NoName} [root@localhost ~]$ echo Firstname=${Firstname} , Name=${Name} Firstname=Ben , Name=Ben
變數 Name 已經設定過為空字串,所以 Firstname 等於 Ben(空字串).
[root@localhost ~]$ Name="" [root@localhost ~]$ Firstname=${Name=NoName} [root@localhost ~]$ echo Firstname=${Firstname} , Name=${Name} Firstname= , Name=
變數 Name 沒有設定過,所以 Firstname 與 name 都會被設定成為 NoName .
[root@localhost ~]$ unset Name [root@localhost ~]$ Firstname=${Name=NoName} [root@localhost ~]$ echo Firstname=${Firstname} , Name=${Name} Firstname=NoName , Name=NoName
:=
同 = ,但空字串視為不存在.
[root@localhost ~]$ Name="" [root@localhost ~]$ Firstname=${Name=NoName} [root@localhost ~]$ echo Firstname=${Firstname} , Name=${Name} Firstname= , Name=
[root@localhost ~]$ Name="" [root@localhost ~]$ Firstname=${Name:=NoName} [root@localhost ~]$ echo Firstname=${Firstname} , Name=${Name} Firstname=NoName , Name=NoName
?
類似 – (用來判斷變數是否存在,不存在則由後面字串來取代.),但如果變數沒有設定時,會直接輸出為 stderr.
變數有設定,所以 Firstname = Ben
[root@localhost ~]$ Name="Ben" [root@localhost ~]$ Firstname=${Name?NoName} [root@localhost ~]$ echo Firstname=${Firstname} , Name=${Name} Firstname=Ben , Name=Ben
空字串也算
[root@localhost ~]$ Name="" [root@localhost ~]$ Firstname=${Name?NoName} [root@localhost ~]$ echo Firstname=${Firstname} , Name=${Name} Firstname= , Name=
沒有設定變數,所以直接輸出為 stderr
[root@localhost ~]$ unset Name [root@localhost ~]$ Firstname=${Name?NoName} -bash: Name: NoName
:?
同 ? ,但空字串視為不存在.
[root@localhost ~]$ Name="" [root@localhost ~]$ Firstname=${Name:?NoName} -bash: Name: NoName [root@localhost ~]$ Firstname=${Name?NoName} [root@localhost ~]$ echo Firstname=${Firstname} , Name=${Name} Firstname= , Name=
沒有解決問題,試試搜尋本站其他內容
One thought on “Bash Shell Script – 變數 測試 , 替換”