Bash-用单引号打印变量,但默认值不带引号

时间:2018-10-08 14:35:16

标签: bash

我的要求是,如果变量具有某些值,则将其打印在单引号中。但是,如果没有,则打印不带引号的默认值。

我的尝试:

var='hello' echo "'${var}'" || echo NULL

输出: 'hello'

var='' echo "'${var}'" || echo NULL

输出: ''

我想要类似的结果: echo ${var:-NULL}

输出: NULL

2 个答案:

答案 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