我正在关注变量变换的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}
下一个:
echo ${FOO:?"some text"}
如果$FOO
设置,那么使用它的值,否则输出到stderr
错误消息“一些文本”(默认为“参数为空或未设置”)。
稍作更正:':'和':='将同时使用如果设置了“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