- ベストアンサー
シェルでファイルを読み込んで分解した文字列を使用してコマンドを発行する方法
- シェルスクリプトを使用してファイルを読み込み、レコードを分解し、分解した文字列を使用してコマンドを発行する方法について学びます。
- ファイルを引数にしてシェルスクリプトを起動し、cutコマンドを使用してレコードを分解します。
- ループを使用して分解した値を一つずつ取得し、コマンドを実行します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
awkを使えばどうでしょうか。 手元にマニュアルが無いので少々正しくないかもしれませんが、シェルから cat $1 | awk \ 'BEGIN {} { split($0,",",ARY1) split(ARY1[1],"=",ARY2) // aaaは先頭という判断です。また配列は1相対だったと思います。 CMD="java testcmd -a " ARY2[2] system(CMD) } END {}'
その他の回答 (3)
- いけだ ひろし(@ike-2000)
- ベストアンサー率53% (69/129)
#3です。splitすみませんでした。 awkはいわゆるUNIXであればOKです。 派生の、 nawk gawk 等かもしれませんが、どれでもOKです。
お礼
全ての関数の引数順番など覚えていられる訳ないので問題ないです。 awkについては勉強になります。 ありがとうございました。
- Tacosan
- ベストアンサー率23% (3656/15482)
ん~, 「aaa=○○の○○を使用してコマンドを発行したい」というのがあいまいで目的が分からん. 「結局のところ何をしたいのか」をもっと明確に書いてもらえれば答えようもあるかもしれんけど....
お礼
回答ありがとう御座います。 あるjavaのクラスに引数として渡したいです。 (つまり、そのjavaはファイルのレコードの数だけ実行される) 1レコード目 java testcmd -a testdata1 2レコード目 java testcmd -a hhogedata1 なので、例のようにechoと考えて頂ければ間違いないです。
- SaKaKashi
- ベストアンサー率24% (755/3136)
ファイルの形式を変えられないのですか?1行に1ファイル名で=より後を書くようにすれば簡単ですけど。
お礼
回答ありがとう御座います。 ファイルの形式は変更できません。 ただ、改めて自分の質問を見直したら大分わかりにくい事に気づきましたので補足説明をさせていただきます。 ファイルは「1ファイル」で作成するシェルに引数としてPATHを渡します。 ./test.sh /tmp/data.dat そのファイルの中身は質問に書いた通りで間違いありません。 ファイル内に記述されているaaaaaaa=○○の○○の部分を抽出して、あるコマンド(上記例だとecho)を発行したいです。 文章がわかりにくくて申し訳ありませんが、回答をお待ちしております。 // 質問内容で「完全案を教えてください。」となっていますが「改善案」の間違いです。。
お礼
マニュアルがない環境での回答ありがとうございます。 split($0,ARY1,",") split(ARY1[1],ARY2,"=") splitの引数の順番を修正したら正しい結果を取得できました。 ただ、これらの作業は自分が確認できる環境ではない所で実施される予定です。 UNIXで動かすことは確認済みなのですが、awkは全てのUNIXに入っているものなのでしょうか?