2016-10-11 128 views
2

我知道我可以做:分配默認值變量,如果一個未設置,猛砸

echo ${var:-4} 

打印4如果var爲null,

但如何在這種情況下分配-n .. ?

echo ${var:--n}不起作用。

這雖然工作..

echo ${var:---n} 

但在這種情況下,它打印出--n,我需要它來打印-n

+2

'echo'簡直是允許做什麼** **當傳遞'-n'作爲參數。請參閱[POSIX規範](http://pubs.opengroup.org/onlinepubs/009604599/utilities/echo.html):*「如果第一個操作數是」-n「,或者任何操作數包含反斜槓( '\')字符,結果是實現定義的「*」。當傳遞'-n'或任何帶有文字反斜槓的內容時,'echo'可能會導致後空翻或殺死你的貓並仍然符合POSIX標準。遵循規範中APPLICATION USAGE部分的建議,並使用'printf'代替。 –

+0

[在bash中使用單個命令將默認值分配給shell變量](http://stackoverflow.com/questions/2013547/assigning-default-values-to-shell-variables-with-a-single-command在 - bash) –

+0

@ElmarPeise,...我不知道它是什麼 - 直接的原因肯定是不同的,至少。 –

回答

8

問題不在於默認值,而是在echo-n對它有特殊含義(檢查help echo)。使用printf代替:

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

是的,我知道'-n'回聲..但它現在沒有發生在我的身邊..有趣的是,這發生了副作用..如果我碰巧嘗試與'$ {var: - a }',它會工作;) – branquito