在編寫shell script 時,時常會遇到:=
、:+
和:-
的使用。以下我們詳細解釋其意義。
1. :=
在shell 中,其寫法如下:
${TEST_FLAG:=STRING}
其表示如下:
if (TEST_FLAG == "" || TEST_FLAG == 空變數) { 輸出STRING 且 TEST_FLAG=STRING }
看以下例子:
#!/bin/sh TEST_FLAG="" echo "TEST_FLAG=\"\"$TEST_FLAG" echo 'echo "${TEST_FLAG:=A}" ====> '"${TEST_FLAG:=A}" echo "TEST_FLAG=$TEST_FLAG" echo "--------------------" TEST_FLAG= echo "TEST_FLAG=$TEST_FLAG" echo 'echo "${TEST_FLAG:=B}" ====> '"${TEST_FLAG:=B}" echo "TEST_FLAG=$TEST_FLAG" echo "--------------------" echo "TEST_FLAG=$TEST_FLAG" echo 'echo "${TEST_FLAG:=C}" ====> '"${TEST_FLAG:=C}" echo "TEST_FLAG=$TEST_FLAG"
其結果如下:

2. :+
在shell 中,其寫法如下:
${TEST_FLAG:+STRING}
其表示如下:
if (TEST_FLAG != "" && TEST_FLAG != 空變數) { 輸出STRING } else { 輸出TEST_FLAG }
看以下例子:
#!/bin/sh TEST_FLAG="" echo "TEST_FLAG=\"\"$TEST_FLAG" echo 'echo "${TEST_FLAG:+D}" ====> '"${TEST_FLAG:+D}" echo "TEST_FLAG=$TEST_FLAG" echo "--------------------" TEST_FLAG= echo "TEST_FLAG=$TEST_FLAG" echo 'echo "${TEST_FLAG:+D}" ====> '"${TEST_FLAG:+D}" echo "TEST_FLAG=$TEST_FLAG" echo "--------------------" TEST_FLAG=1 echo "TEST_FLAG=$TEST_FLAG" echo 'echo "${TEST_FLAG:+D}" ====> '"${TEST_FLAG:+D}" echo "TEST_FLAG=$TEST_FLAG"
其結果如下:

3. :
–
在shell 中,其寫法如下:
${TEST_FLAG:-STRING}
其表示如下:
if (TEST_FLAG == "" || TEST_FLAG == 空變數) { 輸出STRING } else { 輸出TEST_FLAG }
看以下例子:
#!/bin/sh TEST_FLAG="" echo "TEST_FLAG=\"\"$TEST_FLAG" echo 'echo "${TEST_FLAG:-E}" ====> '"${TEST_FLAG:-E}" echo "TEST_FLAG=$TEST_FLAG" echo "--------------------" TEST_FLAG= echo "TEST_FLAG=$TEST_FLAG" echo 'echo "${TEST_FLAG:-E}" ====> '"${TEST_FLAG:-E}" echo "TEST_FLAG=$TEST_FLAG" echo "--------------------" TEST_FLAG=2 echo "TEST_FLAG=$TEST_FLAG" echo 'echo "${TEST_FLAG:-E}" ====> '"${TEST_FLAG:-E}" echo "TEST_FLAG=$TEST_FLAG"
其結果如下:
