繁体   English   中英

在 bash 中使用带参数的函数中的全局变量

[英]Using global variables in functions with parameters in bash

我试图从 bash 中的函数中捕获返回值,该函数修改了一个全局变量。 与没有参数的函数完美配合:

#!/bin/bash

tes=2
testfunction(){
        tes=3
        tes_str="string result"
        return 0
}
if output=testfunction; then
        echo "OK"
else
        echo "KO"
fi
echo $tes
echo $tes_str

但没有参数:

#!/bin/bash

tes=2
testfunction(){
        tes=3
        tes_str="string result"
        return 0
}
if output=$(testfunction "AA" "BB"); then
        echo "OK"
else
        echo "KO"
fi
echo $tes
echo $tes_str

因为对于bash,参数(“AA”或“BB”)是一个命令,我必须把它放在backets中(但如果使用backets,则不能修改全局变量)。 我该怎么做? 我被卡住了。 问候

为什么使用output 只需删除它并运行该功能。

if testfunction; then

笔记:

  • output=testfunction文本testfunction分配给变量output
  • output=$(testfunction)将不起作用,因为$(...)在子外壳内运行所有内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM