首页 > 解决方案 > for循环中的bash脚本数组变量

问题描述

我正在尝试编写获取 3 个路径参数的 bash 脚本。对于 ex /tmp/1 /tmp/2 /tmpnew 我想迭代除最后一个参数之外的参数,并且每次将文件复制到最后一个参数的路径。

我在 for 中遇到了 echo '${files[$(($len))]}' 的问题。我不能像那样拉最后一个论点。

files=( "$@" )

len=${#files[@]}
echo $len
for (( i=0; i<$(( $len -1 )); i++ ))
    do
        echo ${files[$(($len))]}
        echo ${files[$i]}
    done

标签: linuxbasharguments

解决方案


最后一个元素是${files[len-1]},或者简单地说${files[-1]}

同样,您可以使用 just ${files[i]}。如果数组不是关联的,bash 将索引解释为算术表达式。

#!/bin/bash
files=("$@")

len=${#files[@]}
echo $len
for (( i=0; i<len-1; i++ )) ; do
    echo "${files[-1]}"
    echo "${files[i]}"
done

推荐阅读