bash:函数范围之外的变量

渠务署

有没有办法在bash中初始化全局变量并在函数中为其分配值,然后在函数范围之外使用它?

功能示例:

globla_var=""

_DBINFO()
{
  curl  -su $AUTH https://<balla bla >/databases | jq -c 'map(select(.plan.name != "Sandbox")) | .[] | {id, name}'| \
  while  read db
  do
    idb=$(echo "$db" | jq -r '.id')
    name=$(echo "$db" | jq -r '.name')
    if [[ $name = '<bla>' ]]; then
        $global_var_her = $(<bla value>)
     fi
  done
}

然后在函数外使用它:

 echo $global_var

结果

   $0: line 16: =<bla bla>: command not found

我尝试使用声明:

declare -r global_var

相同的结果

那个人

是的,可以,但是您必须小心子外壳,这些子外壳会以意想不到的方式限制范围。while read像您正在做的那样循环到一个循环是一个常见的陷阱

不用管道传递到while读取循环,而是使用重定向和进程替换:

_DBINFO()
{     
  while read db
  do
    idb=$(echo "$db" | jq -r '.id')
    name=$(echo "$db" | jq -r '.name')
    if [[ $name = '<bla>' ]]; then
        global_var=value
     fi
  done  <  <(curl  -su "$AUTH" "https://$host/databases" |
               jq -c 'map(select(.plan.name != "Sandbox")) | .[] | {id, name}')
}

AUTH="user:password"
host="example.com"
_DBINFO
echo "The global variable is $global_var"

您还需要确保分配在语法上是有效的。$var = value不是有效的bash分配,var=value而是。shellcheck可以指出很多类似的事情。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

nodejs pg-promise在函数范围之外获取变量

来自分类Dev

代码具有特定于函数的变量,这些变量会在范围之外更改值

来自分类Dev

javascript 和 d3.js 变量范围:变量在函数调用之外重置

来自分类Dev

监视外部角度变化值之外的变量,然后在根范围内更新角度函数

来自分类Dev

访问匿名函数之外的变量

来自分类Dev

在Erlang函数之外声明变量

来自分类Dev

在Erlang函数之外声明变量

来自分类Dev

在函数中获取变量并将其分配给其范围之外的另一个变量

来自分类Dev

如何访问范围之外的rust变量?

来自分类Dev

角度监视-在功能范围之外更新变量

来自分类Dev

在 `.then` 方法之外未定义范围变量

来自分类Dev

Bash 变量范围问题

来自分类Dev

JavaScript函数变量范围

来自分类Dev

函数自变量的范围

来自分类Dev

在函数范围之外运行C ++代码

来自分类Dev

无论如何要更改函数中全局变量的值并在js中的本地范围之外访问

来自分类Dev

函数问题之外的Javascript使用变量

来自分类Dev

如何访问嵌套的each()函数之外的变量?

来自分类Dev

在函数之外使用局部变量

来自分类Dev

opencv回调函数之外的访问变量

来自分类Dev

在函数之外使用局部变量

来自分类Dev

访问类和函数之外的变量

来自分类Dev

在给定函数之外访问变量

来自分类Dev

如何访问定义它们的函数之外的变量?

来自分类Dev

获取foreach函数之外的变量?使用jQuery

来自分类Dev

将范围绑定到函数调用之外的函数

来自分类Dev

Bash .sh 文件变量范围

来自分类Dev

JavaScript函数和变量范围

来自分类Dev

PHP函数中的变量范围