我的要求是,如果变量具有某些值,则将其打印在单引号中。但是,如果没有,则打印不带引号的默认值。
我的尝试:
var='hello'
echo "'${var}'" || echo NULL
输出:
'hello'
var=''
echo "'${var}'" || echo NULL
输出:
''
我想要类似的结果:
echo ${var:-NULL}
输出:
NULL
答案 0 :(得分:2)
if [ "$var" ]; then
echo "${var@Q}"
else
echo NULL
fi
请注意,"${var@Q}"
扩展为一个字符串,该字符串是用可重新用作输入的格式引用的参数值。如果您只需要引号,请使用"'$var'"
。
答案 1 :(得分:2)
POSIX 外壳程序代码,没有if
:
var=hello; echo ${var:+\'}"${var:-NULL}"${var:+\'}
var=''; echo ${var:+\'}"${var:-NULL}"${var:+\'}
输出:
'hello'
NULL