菜鸟问题!
我在命令行上有一个带有参数的函数
sqr() { echo $(( $1 * $1 )) ; }
sqr 4 回声 16。很好。
现在我想将输出通过管道传输到这个函数
echo 4 | sqr
我收到“语法错误:预期操作数(错误标记为“*”)” - 显然 $1 为空
我尝试使用 xargs 和各种选项将 stdio 传递给函数,但出现“没有这样的文件或目录”错误。我错过了一些明显的东西吗?
我会做什么才能动态使用
STDIN
或参数:
sqr() { if [[ $1 ]]; then arg=$1; else arg=$(cat); fi; echo $(( $arg * $arg )) ; }
$ echo 6 | sqr
36
$ sqr 6
36