迭代 Bash 特殊数组 `${@}` 索引的简单方法

问题描述 投票:0回答:1

当我在 bash 中创建数组时,比方说,

ARR=( apple banana blueberry)

我可以使用

$ARR
轻松迭代
${!ARR[@]}
的索引来获取索引,如下所示:

for i in ${!ARR[@]}; do
   echo "[$i]=${ARR[$i]}"
done

我该如何迭代

${@}

我首先尝试与以下内容进行“等同”:

__fn(){ 
    for i in ${!@}; do
        echo "\[$i\]=${@\[$i\]}";
    done;
}

但是我收到了“替换错误”错误。

作为“解决方法”,我使用

ARRAY=${@}
制作了数组的副本,但我正在寻找一种更优雅的方法。

bash shell
1个回答
0
投票

如何迭代 ${@}?

通常:

while (($#)); do
   echo "$1"
   shift
done

但是如果你想查看索引:

for ((i=1;i<=$#;++i)); do
   echo "[$i]=${!i}"
done

真的,如果您对数组感到满意,只需:

arr=("$@")
© www.soinside.com 2019 - 2024. All rights reserved.