比方说,我有一个文本文件text.
我想要做的是将文本文件放入管道(如cat text |),但在顶部和底部添加了行 - 但没有创建新文件(因为text文件有点大)或修改它.
那可能吗?我在想,echo $(echo "line"; cat text; echo "line")但我不喜欢那样.
来自man bash:
(list)列表在子shell环境中执行(参见下面的COMMAND EXECUTION ENVIRONMENT).影响shell环境的变量赋值和内置命令在命令完成后不会保持有效.返回状态是列表的退出状态.
所以这应该工作:
(echo first line; cat file; echo last line) | some_command
Run Code Online (Sandbox Code Playgroud)
正如chepner所建议的,当你不需要子shell时,你可以使用{}而不是().在这种情况下,;必须包括组中的最后一个命令.
在评论中,Pyrolistical记得如果你有一个传入的管道而不是一个文件,这也有效:
some_program | (echo first line; cat -; echo last line) | some-other-command
Run Code Online (Sandbox Code Playgroud)
与许多unix命令行应用程序一样,如果文件名参数为" cat是",-则表示"从标准输入读取".
| 归档时间: |
|
| 查看次数: |
2518 次 |
| 最近记录: |