我有一个简单的 BASH 命令,看起来像
for i in `seq 2`; do echo $i; done; > out.dat
当它运行时, seq 2
的输出被输出到终端并且没有任何内容输出到数据文件(out.dat)
我期望标准输出被重定向到 out.dat 就像它只是运行命令 seq 2 > out.dat
原文由 Matthew Kirkley 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有一个简单的 BASH 命令,看起来像
for i in `seq 2`; do echo $i; done; > out.dat
当它运行时, seq 2
的输出被输出到终端并且没有任何内容输出到数据文件(out.dat)
我期望标准输出被重定向到 out.dat 就像它只是运行命令 seq 2 > out.dat
原文由 Matthew Kirkley 发布,翻译遵循 CC BY-SA 4.0 许可协议
7 回答5.3k 阅读
4 回答4k 阅读
2 回答5.9k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
1 回答2.3k 阅读✓ 已解决
2 回答793 阅读✓ 已解决
2 回答3.2k 阅读
删除你的分号。
建议
同样正如 Fredrik Pihl 所建议的,在不需要时尽量不要使用外部二进制文件,或者至少在实际上不需要时:
此外,请注意
words
中的输出,这可能会导致路径名扩展。将显示您的文件,而不仅仅是文字
*
。$()
也被推荐为比反引号(`
)更清晰的 Bash 和 POSIX shell 命令替换语法,并且它支持嵌套。更清洁的解决方案以及将输出读取到变量是
和
就预期功能而言,使用 printf 也可以是一种更简单的选择: