に私は私が行うことができます知っている:変数に割り当てるデフォルト値を一が設定されていない場合は、bashの
echo ${var:-4}
をvar
がnullの場合4
を印刷するには、
が、どのようにこの場合の-n
を割り当てることが.. ?
echo ${var:--n}
は機能しません。
これは仕事..
echo ${var:---n}
が、その場合には、それは--n
プリントアウトし、私はそれが-n
を印刷する必要がありませんが。
に私は私が行うことができます知っている:変数に割り当てるデフォルト値を一が設定されていない場合は、bashの
echo ${var:-4}
をvar
がnullの場合4
を印刷するには、
が、どのようにこの場合の-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に準拠する可能性があります。仕様のアプリケーション使用法のセクションの助言に従い、代わりに 'printf'を使用してください。 –
[bashで単一のコマンドでシェル変数にデフォルト値を割り当てる](http://stackoverflow.com/questions/2013547/assigning-default-values-to-shell-variables-with-a-single-command) -in-bash) –
@ElmarPeise、...それはわかりません - 直接的な原因は確かに違います。 –