将 stdio 传输到函数

问题描述 投票:0回答:1

菜鸟问题!

我在命令行上有一个带有参数的函数

sqr() { echo $(( $1 * $1 )) ; }

sqr 4 回声 16。很好。

现在我想将输出通过管道传输到这个函数

echo 4 | sqr

我收到“语法错误:预期操作数(错误标记为“*”)” - 显然 $1 为空

我尝试使用 xargs 和各种选项将 stdio 传递给函数,但出现“没有这样的文件或目录”错误。我错过了一些明显的东西吗?

bash parameters pipe xargs
1个回答
0
投票

我会做什么才能动态使用

STDIN
或参数:

sqr() { if [[ $1 ]]; then arg=$1; else arg=$(cat); fi; echo $(( $arg * $arg )) ; }

$ echo 6 | sqr 
36

$ sqr 6
36
© www.soinside.com 2019 - 2024. All rights reserved.