重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

bashシェルスクリプトの素人です。

IPアドレスを1行に1つずつ記したファイル IP.txt と、IDを1行に1つずつ記したファイル ID.txt があります。
これらのファイルを使用して下のコマンドをすべてのIPアドレスに対して実行した結果を得たいです。

コマンド▲IPアドレス▲ID > result.txt

IPアドレスの配列と、IDの配列を作成し、それをforでループさせれば良いのではと考え、Webで調べましたが実現方法がわからず困っています。

素人質問で申し訳ありませんが知恵を貸してください。

A 回答 (2件)

pasteコマンドでファイルを横に連結すれば、配列を使う必要は無い。



paste IP.txt ID.txt |
while read ip id
do コマンド $ip $id
done > result.txt

bashの配列に入れるのだとすると

ip=(`cat IP.txt`)
id=(`cat ID.txt`)
for i in ${!ip[*]}
do コマンド ${ip[$i]} ${id[$i]}
done > result.txt

>Webで調べましたが実現方法がわからず困っています。

man bash を見ましょう。
    • good
    • 0
この回答へのお礼

ありがとうございます!
参考にさせてもらい実行したところ望んだ結果をえられました!!

お礼日時:2013/11/24 07:23

「実現方法」ってのは, 具体的にはどこの「実現方法」がわからないんでしょうか?


配列を作るところ? for でループ? 実際にコマンドを実行すること?

この回答への補足

Tacosanさま
わかりづらい表現ですみません。
提示してもらいました三点ともわかりません。

補足日時:2013/11/24 01:30
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!