gpt4 book ai didi

linux - 如何将 Linux 管道用于用户定义的 Shell 脚本

转载 作者:太空宇宙 更新时间:2023-11-04 08:59:25 25 4
gpt4 key购买 nike

我有两个用户定义的 shell 脚本:

首先是添加

if [ $# -eq 3 ]
then
sum=`expr $1 + $2 `
echo $sum
else
echo "usage :$0 num1 num2"
echo "num1 and num2 are two numbers"
exit 1
fi

下一个是方形

echo `expr $1 \* $1`

谁能告诉我如何为这些 shell 脚本使用 Linux 管道。我试过类似的东西:

add 10 20 | square                         

但它给了我该目录中的文件列表。

最佳答案

使用管道将第一个命令的输出传递到第二个命令的标准输入。您希望将输出用作第二个命令的参数。尝试 xargs:

add 10 20 | xargs square

当然,在这种情况下,您必须确保第一个命令的输出只是“10”。

多一点解释:管道将获取第一个命令的输出并将其重定向到第二个命令的标准输入流中。这意味着您将不得不使用像“读取”这样的命令(就像其他一些答案一样)来使用输入流中的信息。

但是您的方形脚本没有从标准输入中读取任何内容:它取而代之的是一个参数。所以我们想获取第一个命令 (10) 的输出并将其用作第二个命令的参数。 “xargs”实用程序正是这样做的:它接收的标准输入将作为参数传递给 square 命令。参见 https://en.wikipedia.org/wiki/Xargs .

顺便说一句,命令替换也有同样的效果:

square $(add 10 20)

语法 $(add 10 20) 将运行添加脚本并用其输出替换表达式。所以在运行添加脚本后,该行看起来像这样:

square 30

实际上,我们再次将 add 的输出转换为 square 的参数。

关于linux - 如何将 Linux 管道用于用户定义的 Shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24761387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com