0

location.txtからディレクトリの場所を抽出して配列に保存しようとしていますが、見栄えがよくありません。スクリプトを実行すると、

このエラーが発生します

  ./test.sh: line 7: location.txt: No such file or directory bina@ajax $ ./test.sh
  ./test.sh: line 5: =/apps/IBM: No such file or directory
  ./test.sh: line 5: =/usr/home: No such file or directory
  ./test.sh: line 11: Unix_Array[0]: command not found

  ./test.sh: line 11: Unix_Array[1]: command not found

これが私のコードです

   #!/bin/sh

   counter=0
   while read -r line; do
       ${Unix_Array[${counter}]}=$line;
       let counter=counter+1;
   done < location.txt

   for ((i=0 ;counter > i; i++))
   do
       echo $(Unix_Array[$i])
   done 

およびテキストファイルlocation.txt

   /apps/IBM
   /usr/home
   /var/login

誰かが私が間違ったことを教えてもらえますか?私は知らない愚かなエラーを1つ犯したかもしれません...(私はUNIXで本当に新しいです)

前もって感謝します

4

2 に答える 2

1

値を割り当てて取得するのではなく、配列に割り当てたいだけなので、最初の${}onを削除するだけです。修正されたスクリプトは次のようになります。${Unix_Array[${counter}]}=$line;

#!/bin/sh

counter=0
while read -r line; do
   Unix_Array[${counter}]=$line;
   let counter=counter+1;
done < location.txt

for ((i=0 ;counter > i; i++))
do
     echo ${Unix_Array[$i]}
done
于 2012-09-27T19:16:16.070 に答える
1

bash 4 以降を使用している場合は、次のコマンドを使用してwhile readループを省略できます。readarray

readarray Unix_Array < location.txt

for line in "${Unix_Array[@]}"; do
    echo "$line"
done
于 2012-09-27T19:23:41.790 に答える