【问题标题】:Bash Shell functions [duplicate]Bash Shell函数[重复]
【发布时间】:2016-05-25 20:09:47
【问题描述】:

我在一个名为 func.sh 的 unix 文件中有以下代码:

function sum {
var=$1
result=expr $var * 100
echo $result
}

export -f sum

我希望能够从命令行调用此函数,因此我这样做:

。 ./func.sh

我使用以下命令检查函数是否正确导出: 声明 -x -F

我可以看到这一行:声明 -fx sum

但我无法从命令行运行该功能。它给出了一个错误:

总和 10 -bash: 10: 找不到命令

有人可以解释一下这里的问题吗?

【问题讨论】:

标签: bash


【解决方案1】:

您已正确定义函数,但函数内部的语句导致错误。

你不能这样做:

result=expr $var * 100

您需要使用子shell执行(推荐$())或使用反引号得到expr的结果;最好使用bash$(()) 而不是调用外部进程(expr)

$ function sum { var=$1; result=$(($var * 100)); echo $result; }
$ export -f sum
$ sum 10
1000

【讨论】:

  • 另外,捕获输出只是为了再次打印它是不必要的; function sum { expr "$1 * 100"; } 会做同样的事情。
猜你喜欢
  • 1970-01-01
  • 2012-08-17
  • 2021-11-05
  • 2014-02-10
  • 2011-07-19
  • 1970-01-01
  • 2020-03-16
  • 1970-01-01
  • 2017-11-19
相关资源
最近更新 更多