我有一个简单的 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 许可协议
2 回答713 阅读✓ 已解决
3 回答783 阅读
1 回答770 阅读
2 回答721 阅读
1 回答668 阅读
1 回答612 阅读
1 回答554 阅读
删除你的分号。
建议
同样正如 Fredrik Pihl 所建议的,在不需要时尽量不要使用外部二进制文件,或者至少在实际上不需要时:
此外,请注意
words中的输出,这可能会导致路径名扩展。将显示您的文件,而不仅仅是文字
*。$()也被推荐为比反引号(`)更清晰的 Bash 和 POSIX shell 命令替换语法,并且它支持嵌套。更清洁的解决方案以及将输出读取到变量是
和
就预期功能而言,使用 printf 也可以是一种更简单的选择: