显然,cat
在二进制文件上运行并回显内容似乎不起作用。这是我制作的简单脚本:
#!/bin/sh
CONTENTS=$(cat "$1")
mv "$2" "$1"
echo "$CONTENTS" > "$2"
由于某些原因,当我执行以下操作时,这似乎变得混乱:
script first.pptx second.pptx
运行此命令后,新first.pptx
文件可以很好地打开,但是新second.pptx
文件的格式无效。
为什么会发生这种情况,我该怎么解决?
该构造$(cat "$1")
将在替换该值之前剥离文件中的所有尾随换行符(这就是CONTENTS
最终的结果)。
echo "$CONTENTS"
将截断第一个NUL字符处的内容,并添加换行符。
因此,如果文件不是以一个换行符结尾,则内容将稍作更改。如果有任何NUL字符,它将被截断。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句