加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – 使用数组时出现语法错误

发布时间:2020-12-15 17:00:14 所属栏目:安全 来源:网络整理
导读:我正在创建一个函数,第一个参数将被用作一个全局变量,它保存由参数的其余部分填充的数字数组,但是在分配值时我得到语法错误,但是如果我只是为变量分配一个标量有用.这是下面的代码 new_set_name的值是一个包含所有数组元素的值 #!/usr/bin/env bashcreate()
我正在创建一个函数,第一个参数将被用作一个全局变量,它保存由参数的其余部分填充的数字数组,但是在分配值时我得到语法错误,但是如果我只是为变量分配一个标量有用.这是下面的代码

new_set_name的值是一个包含所有数组元素的值

#!/usr/bin/env bash

create() {

    local new_set_name=${1}

    shift;

    declare -g ${new_set_name}=( ${@} );    
    echo ${!new_set_name}
}

create a 1 2 3 4

echo ${a[@]}

但如果我用标量试了它就行了

#!/usr/bin/env bash

create() {

    local new_set_name=${1}

    shift;

    declare -g ${new_set_name}=1;

    echo ${!new_set_name}
}

create a 1 2 3 4

echo ${a[@]}

看到它适用于标量并且错误是为数组吐出的,我有点惊讶.我怎么解决这个问题?

在bash 4.3或更高版本中,您可以使用 nameref
#!/usr/bin/env bash

create() {
    local -n name=$1; shift
    name=("$@")
}

create a 1 2 3 4
printf '%sn' "${a[@]}"
1
2
3
4

有关更多信息,请参见Bash FAQ #6.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读