如果命令返回空,如何打印从命令获得的值或回退值?

Gon*_*bia 2 bash scripts sed

我有以下脚本

passed=`sed -n 's/.* \([0-9]*\) passed.*/\1/p' evaluation.output`

echo "Passed: $passed"
Run Code Online (Sandbox Code Playgroud)

我的想法是在一个内联句子中使用这样的0作为后备值来做到这一点:

passed=`sed -n 's/.* \([0-9]*\) passed.*/\1/p' evaluation.output || 0`
Run Code Online (Sandbox Code Playgroud)

或者

echo "$($passed || 0)"
Run Code Online (Sandbox Code Playgroud)

如果passed变量获得空值,是否可能获得回退值?

cho*_*oba 8

使用参数扩展

passed=`sed -n 's/.* \([0-9]*\) passed.*/\1/p' evaluation.output`
echo "Passed: ${passed:-0}"
Run Code Online (Sandbox Code Playgroud)

  • 你可能想链接到手册页或某种文档,教一个人钓鱼等等 (2认同)