如何在 shell 脚本中终止 cat 命令

如何在 shell 脚本中终止 cat 命令

我编写了一个shell script使用cattr命令来生成文件的脚本。我的 shell 脚本如下所示

#!/bin/bash
printf "generating random file > plaintext \n"
cat -v | tr "a-z" "b-y" < plaintext  > generatedtext 

在执行脚本时,它不会终止cat命令,并且当我使用CTRL+Z停止 shell 脚本执行时。现在,当我查看 - 的内容时,generatedtext第一个字符被更改(基于tr),其余字符都是一个并且与明文中的相同。

例如,如果内容plaintext

这是一个苹果。

shell执行后,内容generatedtext

xhis 是一个苹果。

答案1

tr阅读纯文本文件后,您需要:

#!/bin/bash
printf "generating random file > plaintext \n"
cat -v < plaintext | tr "a-z" "b-y" > generatedtext

您的问题plaintext被重定向到trnot cat。或者,您可以在子 shell 中运行管道命令:

#!/bin/bash
printf "generating random file > plaintext \n"
( cat -v | tr "a-z" "b-y" ) < plaintext  > generatedtext 

相关内容