【问题标题】:return values from bash script从 bash 脚本返回值
【发布时间】:2018-04-20 23:23:48
【问题描述】:

我想创建一个返回值的 Bash 文件。 意思是,在脚本script_a.bash中我有一定的计算,脚本script_b.bash会调用它。

script_a.bash:

return $1*5

script_b.bash:

a_value=./script_a.bash 3

a_value 何时为 15。

我阅读了一些关于此的内容,发现 bash 中没有“return”,但是可以在使用“echo”的函数中完成类似的操作。我不想使用函数,我需要一个通用脚本在多个地方使用。

是否可以从不同的脚本返回值?谢谢!

【问题讨论】:

  • 使用exit rc 而不是return rc
  • 无法从 bash 脚本返回值。如果您回显结果,则调用进程可以获取它。可以使用exit 返回数字,但不建议这样做,因为它代表状态代码(还有一些代码是保留的 - 所以不应该使用“应该”)。

标签: linux bash echo return-value


【解决方案1】:

使用命令替换捕获echo的输出,并使用算术表达式计算结果:

script_a.bash:

echo $(( $1 * 5 ))

script_b.bash

a_value=$( script_a.bash 3 )

【讨论】:

    【解决方案2】:

    不要使用returnexit,因为它们用于指示脚本的成功/失败,而不是输出。

    这样写你的脚本:

    #!/bin/bash
    
    echo $(( $1 * 5 ))
    

    访问值:

    a_value=$(./script_a.bash 3)
    

    也就是说,在消费代码中使用$(command substitution) 来捕获脚本的输出。

    【讨论】:

      【解决方案3】:

      您可以使用 exit rc;,但请记住,通常在 *nix 中 0 是成功的结果,任何正值都是错误代码。 是否可以选择调用

      echo <your_value>;
      

      并将输出重定向到链中调用的下一个二进制文件?

      【讨论】:

      • 另请注意 exit 状态仅限于 0-255 - 所以 OP 的 $1 最多只能是 85 :-)
      猜你喜欢
      • 2018-06-25
      • 1970-01-01
      • 1970-01-01
      • 2018-07-02
      • 1970-01-01
      • 2012-04-22
      • 2022-10-14
      • 1970-01-01
      • 2012-08-07
      相关资源
      最近更新 更多