2017-10-19 72 views
0

如何分配給一個變量在Bash中的數組元素,使得該陣列是指數本身由一個變量(一個最微不足道的事情在任何語言,但在bash似乎特別?)猛砸使用變量作爲索引陣列

我試過很多變種,如:

let temp1=list1[list1Index] 

temp1=${list1[$list1Index]} 

他們沒有明顯的工作。沒有錯誤,但沒有顯示回聲$ temp1 我該怎麼辦?

這裏是完整的代碼(用假名字的路徑):

#! /bin/bash 
pathFrontalGray='/mnt/c/Users/dummyName/' 

list1=('x' 'y' 'z' 'a' 'b' 'c') 
prefix1='dummyName' 
echo $pathFrontalGray 
touch fileNamesGray.txt 
ls $pathFrontalGray > fileNamesGray.txt 
fileGray='fileNamesGray.txt' 
list1Index=0 
i=0 
while IFS= read -r line 
do 
    let i=i+1 
    echo $i 
    #means if NOT divisibe by 9 -> if <expr evaluated to 0> -> equiv if false 
    if (($i % 9));then 
     let list1Index=list1Index+1 
    fi 

    temp1=$list1[$((list1Index))] 
    echo $temp1 
    #mv $pathFrontalGray$line $prefix1${list1[$list1Index]} 
    # display $line or do somthing with $line 
    #printf '%s\n' "$line" 
done <"$fileGray" 
+0

'$ array [$((index))]'? – daniu

+2

您的第二種方法''{arr [$ idx]}「'應該有效。向我們展示你的陣列。 – randomir

+1

'list1 [list1Index]'實際上也適用,如果它是一個非關聯數組而'list1Index'的名字是一個包含一個整數值的變量。也就是說 - (1)不,它不是「顯而易見的」,(2)我們真的需要一個包含在問題中的[mcve],以便其他人可以重現所聲稱的行爲。 –

回答

0

我發現這個問題。我對不起

curr1=${list1[index1]} 

工作正常。問題在於,顯示的許多其他東西都丟失了回聲。抱歉給你帶來不便。我想我有點累...