2
我知道我可以做:分配默认值变量,如果一个未设置,猛砸
echo ${var:-4}
打印4
如果var
为null,
但如何在这种情况下分配-n
.. ?
echo ${var:--n}
不起作用。
这虽然工作..
echo ${var:---n}
但在这种情况下,它打印出--n
,我需要它来打印-n
。
我知道我可以做:分配默认值变量,如果一个未设置,猛砸
echo ${var:-4}
打印4
如果var
为null,
但如何在这种情况下分配-n
.. ?
echo ${var:--n}
不起作用。
这虽然工作..
echo ${var:---n}
但在这种情况下,它打印出--n
,我需要它来打印-n
。
问题不在于默认值,而是在echo
:-n
对它有特殊含义(检查help echo
)。使用printf
代替:
printf '%s\n' "${var:--n}"
是的,我知道'-n'回声..但它现在没有发生在我的身边..有趣的是,这发生了副作用..如果我碰巧尝试与'$ {var: - a }',它会工作;) – branquito
'echo'简直是允许做什么** **当传递'-n'作为参数。请参阅[POSIX规范](http://pubs.opengroup.org/onlinepubs/009604599/utilities/echo.html):*“如果第一个操作数是”-n“,或者任何操作数包含反斜杠( '\')字符,结果是实现定义的“*”。当传递'-n'或任何带有文字反斜杠的内容时,'echo'可能会导致后空翻或杀死你的猫并仍然符合POSIX标准。遵循规范中APPLICATION USAGE部分的建议,并使用'printf'代替。 –
[在bash中使用单个命令将默认值分配给shell变量](http://stackoverflow.com/questions/2013547/assigning-default-values-to-shell-variables-with-a-single-command在 - bash) –
@ElmarPeise,...我不知道它是什么 - 直接的原因肯定是不同的,至少。 –