在bash中获取数组的元素
我有一个vars:在bash中获取数组的元素,bash,Bash,我有一个vars: REPO_ZERO=('first' 'two' 'three') REPO_ONE=('1' '2' '3') REPOS=( $REPO_ZERO $REPO_ONE ) 我创建了一个循环来迭代它们: for REPO in $REPOS do echo $REPO done 我只得到第一个元素“firts”和“1”,如果我键入: 以美元回购的回购 做 echo$REPO[1] 完成 我得到“第一个[1]”和“第一个[1]” 如果我键入以下内容: fo
REPO_ZERO=('first' 'two' 'three')
REPO_ONE=('1' '2' '3')
REPOS=(
$REPO_ZERO
$REPO_ONE
)
我创建了一个循环来迭代它们:
for REPO in $REPOS
do
echo $REPO
done
我只得到第一个元素“firts”和“1”,如果我键入:
以美元回购的回购
做
echo$REPO[1]
完成
我得到“第一个[1]”和“第一个[1]”
如果我键入以下内容:
for REPO in $REPOS
do
echo ${REPO[1]}
done
我什么也得不到
我可以做些什么来获取循环中的元素?我在寻找,但我没有找到任何有效的
谢谢 Bash不支持多维数组
REPO_ZERO=('first' 'two' 'three')
REPO_ONE=('1' '2' '3')
REPOS=( $REPO_ZERO $REPO_ONE)
等于:
REPO_ZERO=('first' 'two' 'three')
REPO_ONE=('1' '2' '3')
REPOS=('first' '1')
因为$REPO_ZERO
和$REPO_ONE
将返回每个数组的第一个元素
您可以使用
echo${array[*]}
命令打印数组您可以使用间接${!var}
和函数对2d数组的功能进行排序
twod(){
element="$1[$2]"
echo "${!element}"
}
REPO_ZERO=('first' 'two' 'three')
REPO_ONE=('1' '2' '3')
REPOS=( 'REPO_ZERO' 'REPO_ONE')
for i in "${REPOS[@]}";do
twod "$i" 2
done
印刷品
three
3
可以将两个数组与
REPOS=( "${REPO_ZERO[@]}" "${REPO_ONE[@]}" )
for repo in "$REPOS[@]}"; do
echo "$repo"
done
正如所说的,bash不支持多维数组,但是根据您的用例,您可以模拟它 因此,如果您将数组定义为
REPOS=(
"first two three"
"1 2 3")
您可以按如下方式显示内容
for REPOLINE in "${REPOS[@]}"
do
REPO=($REPOLINE)
for ((i=0;i<=${#REPO[*]};i++));
do
echo ${REPO[i]}
done
done
将REPOS数组中的每一行传递给另一个名为REPO的数组
我用过这个,效果很好。如果您还有任何问题,请随时提问。Bash不支持多维数组。谢谢,我将改变一些想法,我认为这会起作用。我已经使用了这个,并且有效……嗯,您是否尝试过使用glob字符?拆分字符串是一种可怕且不受欢迎的方法。我根据您的用例在答案中列出了这一行,它帮助我解决了手头的一个问题
REPO=($REPOLINE)