在編寫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"
其結果如下:
