bash:从另一个文件填充文件

use*_*464 3 linux bash

我有一个名为SOURCE的文件,我想创建一个名为TARGET的特定长度的文件,其中包含SOURCE的副本.TARGET的长度不一定是SOURCE长度的整数倍.我想在Linux上使用bash来做这件事.

我的第一次尝试是这样的:

while true; do cat SOURCE; done | head -c $TARGET_LENGTH > TARGET
Run Code Online (Sandbox Code Playgroud)

在将指定的字节数写入TARGET后挂起.如何让它不挂?(我怀疑我错过了关于管道和信号如何工作的细节.)

编辑:我知道它会while true永远运行,但我希望head命令在消耗指定的字节数后关闭所有内容.

gni*_*urf 6

这个怎么样?

while cat SOURCE; do true; done | head -c "$TARGET_LENGTH" > TARGET
Run Code Online (Sandbox Code Playgroud)

  • 我认为这是发生的事情:head exits,关闭它的stdin,然后cat以非零退出代码退出,因为它的stdout被关闭,这终止了循环. (3认同)