我在一个名为 func.sh 的 unix 文件中有以下代码:
function sum {
var=$1
result=expr $var * 100
echo $result
}
export -f sum
我希望能够从命令行调用此函数,因此我这样做:
./func.sh
我使用以下命令检查函数是否正确导出:声明 -x -F
我可以看到这一行:声明 -fx 和
但是我无法从命令行运行该功能。它给出了一个错误:
总和 10-bash:10:找不到命令
有人可以阐明这里的问题是什么吗?
您已正确定义函数,但函数中的语句导致错误。
你不能做:
result=expr $var * 100
你需要使用子shell执行($()
推荐)或使用反引号来获取expr
的结果;最好使用bash
的$(())
而不是调用外部进程(expr)
$ function sum { var=$1; result=$(($var * 100)); echo $result; }
$ export -f sum
$ sum 10
1000