ここにはいくつかの構文エラーがありますが、明らかな問題は、割り当てが行われていることですが、暗黙のサブシェルにいます。パイプを使用することで、 whileステートメント全体のサブシェルを作成しました。whileステートメントが完了すると、サブシェルが終了し、Unix_Array
存在しなくなります。
この場合、最も簡単な修正はパイプを使用しないことです。
counter=0
while read line; do
Unix_Array[$counter]=$line;
let counter=counter+1;
echo $counter;
done < hello.txt
echo ${Unix_Array[0]}
echo ${Unix_Array[1]}
echo ${Unix_Array[2]}
ちなみに、カウンターは必要ありません。これを書く簡単な方法は次のようになります。
$ oIFS="$IFS" # Save the old input field separator
$ IFS=$'\n' # Set the IFS to a newline
$ some_array=($(<hello.txt)) # Splitting on newlines, assign the entire file to an array
$ echo "${some_array[2]}" # Get the third element of the array
c
$ echo "${#some_array[@]}" # Get the length of the array
4