2017-03-06 18 views
0

私は変数の変換に関するthisのチュートリアルに従っています。

私は、次のしている場合:

echo ${TEST:-test} #TEST is undefined, 'test' is printed and TEST is still undefined. 
echo ${FOO:?"some text"} #"some text" is printed and FOO is still undefined. 

':-'と上記':?'の違いは何ですか?

+1

ここにあなたの答えがあります:https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html – codeforester

答えて

1

これらのショートカットをテストする:

echo ${TEST:-test} 

$TESTが存在する場合、その値は、そうでなければ$testの値が使用され、使用されるであろう。あなたはTESTを設定したい場合、あなたはおそらく必要があります。

echo ${TEST:=test} 

次の1:

echo ${FOO:?"some text"} 

$FOOが設定されている場合は、(エラーメッセージ「いくつかのテキスト」stderrにその値、それ以外の出力を使用しますデフォルトは "パラメータnullまたは設定されていません")。

+2

些細な修正: ':-'と':= '両方が使用されます'TEST'が設定されている場合は代わりの値ですが、空の文字列になります。 '$ {TEST-test}'と '$ {TEST = test}'は空文字列が 'TEST'が明示的に以前に設定されていればそれを保持します。 '$ {FOO:?}'は、 'FOO'がセットされていても空文字列になっている場合は、同様にエラーメッセージを表示します。空の値が有効な場合は、 '$ {FOO?error}'を使用してください。 – chepner

関連する問題