shell 中,詳解:=、:+ 和:-

在編寫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"

其結果如下:

發佈留言