2017-09-02 97 views
1

這不應該工作嗎?它看起來應該從info頁面開始。

echo ${[email protected]} 
bash: ${[email protected]}: bad substitution 

我做錯了什麼? 謝謝。

編輯:我拿出了我的命令提示符......這是一箇舊的BSD,看起來像stderr重定向。我的錯。

+0

什麼是你想要做什麼呢? – z3nth10n

+0

在bash-4.4'$ {PARAMETER @ OPERATOR}' 擴展或者是PARAMETER 的值的變換或者PARAMETER本身的信息,具體取決於操作符的值 。每個操作員都是單個字母: 'Q' 擴展是一個字符串,它是以可重新用作輸入的格式引用的PARAMETER 的值。 –

+0

預期產出/結果是什麼?首先,您不能將stderr重定向到另一個進程,但可以通過將stderr管道連接到另一個進程。但是,我無法看到「echo $ {IFS @ Q}」應該用管道來完成什麼。最後,我看不出$ {IFS @ Q}應該做什麼。你能解釋一下你想要發生什麼嗎? –

回答

3

我是個白癡。我正在閱讀info從一臺機器(版本4.4.0(2) - 發佈(sparc-sun-solaris2.7))頁面,而另一個版本(版本4.2.46(1) - 發佈(i386-redhat-linux -gnu))。

看來${@Q}表示法是新的。

在bash-4.4輸出爲:

echo ${[email protected]} 
$' \t\n' 
+2

使用'printf'%q \ n'「$ IFS」'來兼容舊shell。 –

+0

哦,我喜歡'printf%q'。誰知道我打什麼bash?我已經找到了一臺沒有關聯數組的機器(bash-3?),並且不得不重新編寫一堆代碼。 –