如果变量为空,如何打印连字符?

如果变量为空,如何打印连字符?

我正在wmicLinux系统上使用Windows系统收集信息。为此,我进行了各种wmic调用,并将它们的输出存储在一些变量中。收集所需数据后,将echo这些变量(用冒号分隔)保存到一个文件中。

但是,当变量存储“空”值时,就会出现问题,因为它只显示两个连续的冒号,而不显示任何内容。

当变量中存储有空值时,如何printf利用它来显示“连字符”?

答案1

您可以使用以下语法:

"${var:-word}"

$var如果变量的值已设置且不为空,则这将替换该变量的值;如果不是,则将替换为 as 给出的任何内容word。例如:

$ var=foo
$ echo "${var:-bar}"
foo
$ var=
$ echo "${var:-bar}"
bar

因此,根据您的具体情况,您可以使用:

echo "${var:--}"

或者更安全、更便携:

printf '%s\n' "${var:--}"

相关内容