2017-09-02 77 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?),并且不得不重新编写一堆代码。 –