&> 测试或 > 测试 2>&1

&> 测试或 > 测试 2>&1

&>我从用于处理错误和数据的指令中读取

$ls -al test test2 test3 badtest &> test7
$ cat test7
ls: cannot access 'test': No such file or directory
ls: cannot access 'badtest': No such file or directory
-rw-r--r-- 1 me staff 78 Oct 28 19:07 test2
-rw-r--r-- 1 me staff  0 Oct 28 19:03 test3

尽管如此,当我检查时过时且已弃用的语法 [Bash Hackers Wiki]

它推荐2>&1

$ ls -al test test2 test3 badtest > test7 2>&1

 $ cat test7
ls: cannot access 'test': No such file or directory
ls: cannot access 'badtest': No such file or directory
-rw-r--r-- 1 me staff 78 Oct 28 19:07 test2
-rw-r--r-- 1 me staff  0 Oct 28 19:03 test3

我应该遵循哪种模式

答案1

这由你决定。

shell将和bash理解为相同的,您可以使用前一种语法作为编写后者的快捷方式。其他 shell 可能会抛出语法错误或对.&>file>file 2>&1&>

如果你仅有的编写bash脚本(而不是例如的脚本/bin/sh),那么一定要使用&>,但是如果您发现自己想要或需要编写便携的脚本(需要在任何类似 shell 下运行/bin/sh或可由任何sh类似 shell 执行的脚本,其中bash之一是kshzshdash是其他),那么&>是您应该避免的事情之一。

所有sh类似的 shell 实现POSIX 标准在语法和文法方面,但bash其他 shell 还提供了语法便利性,如数组和正则表达式匹配等扩展,并且某些 shell 可能以与执行方式&>完全不同的方式在 POSIX 标准上进行扩展。bash

有关的:

相关内容