如何使用管道(连接cmd)

如何使用管道(连接cmd)

我在执行“|”时遇到问题root模式下命令,命令如下

cat xyz.sh | chmod 744 xyz.sh | echo "hello" > xyz.sh

当我使用运行此命令时./xyz.sh,出现错误

./xyz.sh: line 1: hello: command not found

请指定我。如果,我做错事了!

答案1

首先,你需要了解什么是管道:

管道是由控制运算符分隔的一个或多个命令的序列|。对于除最后一个命令之外的每个命令,shell 应将命令的标准输出连接到下一个命令的标准输入

您的管道中发生的情况如下:

  1. cat将 的内容发送xyz.sh到下一个命令的标准输入。
  2. chmod接收该数据,但据我所知,它不会对其执行任何操作。相反,它会更改下一个命令的权限xyz.sh,并且不会向其标准输入发送任何内容。
  3. echo什么也没收到,但这并不重要,因为echo一开始就没有读取标准输入。作为钢铁起子说,用单词echo覆盖 的内容。xyz.shhello

然后,如果您尝试运行xyz.sh,您的 shell 找到的唯一语句是helloand 它将尝试hello作为命令运行。您没有hello安装任何命令,所以这就是您收到command not found错误的原因。

相关内容