【问题标题】:Why stream redirection operator &>> not working in SUSE linux?为什么流重定向运算符 &>> 在 SUSE linux 中不起作用?
【发布时间】:2016-07-05 05:13:23
【问题描述】:

我的 shell 脚本在 SUSE Linux 上失败了,因为我使用的流重定向运算符 (&>>) 在那里不起作用,(但它在其他发行版中运行良好)。我该如何纠正这一点。另外我想知道所有发行版都支持的标准方法?

【问题讨论】:

  • 重定向操作符取决于您使用的 shell(bash、sh、ksh、csh 等)。你用的是什么外壳?
  • 我没有指定任何外壳。它必须使用默认值。
  • 我猜不出来。 echo $SHELL 有什么结果吗?或者echo $shell
  • &>> file,你的意思是>> file 2>&1吗?见wikipedia
  • 大多数 linux 发行版,包括 Suse,都使用 bash 作为默认 shell。因此,由于某些原因,与您连接的用户使用非 bourne shell。尝试命令echo $SHELL 来检查。

标签: linux shell suse


【解决方案1】:

您使用的命令应该意味着您使用的是 bourne shell:

ls &>> file

此命令应在文件末尾重定向 stdout 和 stderr。 使用 bourne shell 的另一种编写方式可能是:

ls >> file 2>&1

但是在我看来,这种编写命令的方式会被更多的 shell 识别,我认为例如 ksh 会识别第二种形式而不是第一种。

使用 csh 或类似 csh 的 shell,您将需要使用以下语法:

ls >>& file

编辑:我很困惑,因为根据 shell,您可以使用不一样的 &>>>>&

【讨论】:

    猜你喜欢
    • 2021-03-28
    • 2015-07-06
    • 2017-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多