私は変数の変換に関する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.
':-'
と上記':?'
の違いは何ですか?
私は変数の変換に関する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.
':-'
と上記':?'
の違いは何ですか?
これらのショートカットをテストする:
echo ${TEST:-test}
$TEST
が存在する場合、その値は、そうでなければ$test
の値が使用され、使用されるであろう。あなたはTEST
を設定したい場合、あなたはおそらく必要があります。
echo ${TEST:=test}
次の1:
echo ${FOO:?"some text"}
$FOO
が設定されている場合は、(エラーメッセージ「いくつかのテキスト」stderr
にその値、それ以外の出力を使用しますデフォルトは "パラメータnullまたは設定されていません")。
些細な修正: ':-'と':= '両方が使用されます'TEST'が設定されている場合は代わりの値ですが、空の文字列になります。 '$ {TEST-test}'と '$ {TEST = test}'は空文字列が 'TEST'が明示的に以前に設定されていればそれを保持します。 '$ {FOO:?}'は、 'FOO'がセットされていても空文字列になっている場合は、同様にエラーメッセージを表示します。空の値が有効な場合は、 '$ {FOO?error}'を使用してください。 – chepner
ここにあなたの答えがあります:https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html – codeforester