【问题标题】:How to store output of a function in a variable in bash [closed]如何将函数的输出存储在bash中的变量中[关闭]
【发布时间】:2020-11-07 04:53:33
【问题描述】:

如何将函数中的值存储到 bash 中的变量中,该变量在每次运行代码时都会重置。我尝试了一些东西,但它在代码运行后打印了函数的值

【问题讨论】:

    标签: bash shell terminal


    【解决方案1】:

    Bash 函数模仿进程的行为,但默认情况下在同一个 bash 进程中运行。当使用$() 语法调用函数时,它们会在子进程中运行。

    传递参数并捕获函数的输出与处理进程的方式相同:

    function f() { echo "Hello, $1!"; }
    f_output=$(f "world")
    echo "f output is: $f_output"
    

    输出:

    f output is: Hello, world!
    

    要了解bash 及其工作原理,您可能需要阅读一本关于它的好书。

    【讨论】:

    • 虽然这可能是一个实现细节,但我不认为所有 bash 函数都作为子进程运行。支持细节:如果你用 { 和 } 分隔一个 bash 函数,你可以在函数中改变一个变量,它会在调用者中改变。如果用 ( 和 ) 分隔 bash 函数,则变量是函数的局部变量。
    • @dstromberg 你说的很对,bash 函数默认运行在同一个进程中。
    • 函数默认不作为子进程运行,但$( )的内容会,所以在这种情况下它确实作为子进程运行。
    猜你喜欢
    • 2021-07-04
    • 2014-10-21
    • 2020-07-04
    • 1970-01-01
    • 2018-07-15
    • 1970-01-01
    • 1970-01-01
    • 2018-07-12
    • 2013-04-14
    相关资源
    最近更新 更多