1

私がやろうとしているのは、アプリケーションの bash スクリプトで 2D 配列をエミュレートすることです。(bashで書くのは馬鹿ですが、締め切り前に作業コピーができたら書き直します)

読み取りたい server.data ファイル:

1:hello:there
2:im:a
3:computing:system

私はPHPの方がbashよりもよく知っていますが、ここに私が意味する疑似コードがあります

foreach(line in server.data) {         
 arr = explode(":", server.data)  
  echo arr[0]    
  echo arr[1]  
  echo arr[2]  
  echo \n  
}

これらの値を返します:

1 hello there
2 im a
3 computing system

誰かが小さな bash スクリプトを書いて、各行を配列に配置する方法を説明できますか?

4

5 に答える 5

5
cat server.data | 
while read line; do  
   IFS=: 
   set - $line
   echo $1  
   echo $2  
   echo $3
done
于 2012-07-29T14:47:36.897 に答える
0
while IFS=: read -a arr; do
    echo "${a[@]}"
    echo -n "${arr[0]} "
    echo -n "${arr[1]} "
    echo "${arr[2]}"
done < server.data

ステートメントはecho、配列にアクセスするいくつかの方法を示しているだけです。すべての作業は によって行われread -aます。

于 2012-07-29T15:01:47.243 に答える
0

テキスト ファイルの名前が「x.txt」であると仮定します。

#!/bin/bash

for line in `cat x.txt`; do
    a[${i}]=$line;
    i=$i+1;
done;

echo ${a[0]};
echo ${a[1]};
echo ${a[2]};
于 2012-07-29T14:56:47.193 に答える
0

これにより、各次元インデックスを連結して個々の要素にアクセスできる疑似 2D 配列が得られます。

while read line
do
    ((i++))
    j=0
    IFS=:
    for e in $line
    do
        ((j++))
        lines["$i$j"]=$e
    done
done < data.txt

echo ${lines[@]}
1 hello there 2 im a 3 computing system
echo ${lines[12]}
hello
于 2012-07-29T15:08:49.940 に答える