0

次の内容の構成ファイルがあります。

ip address file_location
ip address file_location
.
.
.
.

スクリプト test.sh で、このファイルから IP アドレスとファイルの場所を読み取るようにしたいと思います。コードは次のとおりです。

while read line ; do
ip=`echo $line| awk '{print $1}'`
done <test.conf

ここで、echo $ip と入力すると (機能するかどうかを確認するためだけに)、空白になります。

4

3 に答える 3

2

これは、bash 配列を作成する方法の 1 つです。

$ declare -A mylist
$ i=1
$ while read line; do mylist[$i]=$(echo $line | awk '{print $1}'); ((i++)); done < test.conf

次に、次の方法で値にアクセスできます。

$ for i in "${mylist[@]}"; do echo "$i"; done
ip1
ip2
ip3

または、Jonathan Leffer の非常に興味深いアプローチを使用すると、次のコマンドで配列を設定できます。

mylist=( $(awk '{print $1}' test.conf) )

次のようなデータが保存されます。

mylist=(ip1 ip2 ip3 ...)
于 2013-10-11T14:28:04.750 に答える
0

割り当てはwhileループの内側のシェルで実行されるため、ip外側の変数には影響しません。代わりにこれを行うことを検討してください。

ip=$(awk '/IMPORTANT_LINE_REGEXP/ {print $1}' test.conf)
于 2013-10-11T14:05:52.407 に答える