${foo:=bar}
1: #!/bin/sh執行後的輸出結果會是
2:
3: foo='foo'
4: echo ${foo}
5: echo ${foo:=bar}
6: echo ${foo}
7:
8: unset foo
9: echo ${foo}
10: echo ${foo:=bar}
11: echo ${foo}
foo因為 ${foo:=bar} 的意義是:
foo
foo
bar
bar
當 $foo 值不存在或者是空字串時,將 $foo 的值指定為 'bar',並且傳回 'bar'
所以第5行的結果並不會改變 $foo 的值並且傳回 'foo'
而第9行的作用是把 $foo 的值指定為 'bar' 並且傳回 'bar'
${foo:-bar}
1: #!/bin/sh執行後的輸出結果會是
2:
3: foo='foo'
4: echo ${foo}
5: echo ${foo:-bar}
6: echo ${foo}
7:
8: unset foo
9: echo ${foo}
10: echo ${foo:-bar}
11: echo ${foo}
foo因為 ${foo:-bar} 的意義是:
foo
foo
bar
當 $foo 值不存在或者是空字串時,傳回 'bar',但是不改變 $foo 的值
${foo:+bar}
1: #!/bin/sh執行後的輸出結果會是
2:
3: foo='foo'
4: echo ${foo}
5: echo ${foo:+bar}
6: echo ${foo}
7:
8: unset foo
9: echo ${foo}
10: echo ${foo:+bar}
11: echo ${foo}
foo因為 ${foo:+bar} 的意義是:
bar
foo
當 $foo 值存在並且不為空字串時,傳回 'bar',但是不改變 $foo 的值
${foo:?bar}
1: #!/bin/sh執行後的輸出結果會是
2:
3: foo='foo'
4: : ${foo:?bar}
5: echo "Here"
6:
7: unset foo
8: : ${foo:?bar}
9: echo "Cannot be here."
Here因為 ${foo:?bar} 只是拿來檢查 $foo 的值存在並且不為空字串
sample.sh: line 8: foo: bar
檢查不通過時就會印出錯誤訊息並且結束程式
其中的 'bar' 是自訂的錯誤訊息,不填的話輸出結果就變成了
Here
sample.sh: line 8: foo: parameter null or not set
沒有留言:
張貼留言