![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67b6d)
test.nicdfにはネットワークアドレスとマウントポイント(df)の情報が格納されてます。
行いたいこととしては、
test.nicdfファイルから一行づつ読み取り、
ネットワークアドレスとマウントポイントの2つの情報を読取ます。
マウントポイントは複数行あるため分り易いネットワークアドレスを
grepで抽出して、他の行はマウントポイントとして認識させようと思いました。
===========================
$ cat test.nicdf
210.175.250.212
/dev/mapper/VolGroup00-LogVol00
/dev/hda1
tmpfs
==========================
$ test.sh
#!/bin/sh
while read LINE; do
echo $LINE
if [ ${LINE} grep "192" ]
then echo "network"
else echo "NEXT"
fi
done < test.nicdf
==========================
しかし下記のエラーが発生します。
grepの書き方が悪いようです。
このエラーを解決する方法をご教授願います。
また、ネットワークアドレスとマウントポイントの2つの変数に格納する方法も
あわせてご教授頂けませんでしょうか?
よろしくお願いします。
=========================
$ ./test.sh
192.168.0.250
./testnakano.sh: line 6: [: grep: binary operator expected
NEXT
/dev/mapper/VolGroup00-LogVol00
./testnakano.sh: line 6: [: grep: binary operator expected
NEXT
/dev/hda1
./testnakano.sh: line 6: [: grep: binary operator expected
NEXT
tmpfs
./testnakano.sh: line 6: [: grep: binary operator expected
NEXT
=========================
No.4ベストアンサー
- 回答日時:
>grep '^[0-9]' test.nicdf > network.txt
>grep -v '^[0-9]' test.nicdf > mount.txt
> 元の情報ファイル(test.nicdf)から上記のようにファイルで呼ぶのではなく
> 変数で出力する手段をご教授頂けないでしょうか?
`command` や $(command)
$() は方言か。
それに一時ファイルに毎回適当な名前を付けるようにすれば、そんなに毛嫌いする必要もないと思います。例えば mktemp 使って、
networks=`grep '^[0-9]' test.nicdf`
mounts=`grep -v '^[0-9]' test.nicdf`
tmp=`mktemp /tmp/df.txt.XXXXXX` || exit 1
df > $tmp
for a in $mounts; do
fgrep "$a" $tmp || echo $a no mounted
done
rm -f $tmp
exit 0
あと注意点ですが、fgrep $a だと複数行に一致する可能性もあるし、パスに空白文字が入るとまともに動かない。他にもなんかあるだろうけど、そういうことは実際やる本人が考える事と思いますので、通常あまりくどくど書きません。
No.3
- 回答日時:
> grepで抽出して、他の行はマウントポイントとして認識させようと思いました。
> /dev/mapper/VolGroup00-LogVol00
> /dev/hda1
どう見てもマウントポイントじゃないんですけど?
> 2,取り出したデータをマウント情報とネットワーク情報に振り分ける
この二種類のデータの関連性が不明ですが、とりあえず無関係とすると
grep '^[0-9]' test.nicdf > network.txt
grep -v '^[0-9]' test.nicdf > mount.txt
か
grep '^/' test.nicdf > mount.txt
でいい気がする。
5,dfで取得したマウント情報と入力したマウント情報を比較する。
df > df.txt
grep '^/' test.nicdf | while read a; do fgrep $a df.txt || echo $a no mouted; done
みたいな感じ?
この回答への補足
>grep '^[0-9]' test.nicdf > network.txt
>grep -v '^[0-9]' test.nicdf > mount.txt
元の情報ファイル(test.nicdf)から上記のようにファイルで呼ぶのではなく
変数で出力する手段をご教授頂けないでしょうか?
よろしくお願いします。
No.2
- 回答日時:
if の条件に書くのは「普通のコマンド」です. で, そのコマンドの返り値が 0 か 0 でないかによって then の方を実行するか else の方を実行するかが決まります.
だから
if ${LINE} grep "192"
と書くということは, あなたは
${LINE} grep "192"
のようなコマンドを実行しているということを意味しちゃうよ. grep をこんな風に実行したこと, ありますか?
いずれにしても
・それは何を意図したものなの?
・究極的には何をしたいの?
があった方が答えやすい気がする. 後者はつまり「それぞれ変数に入れて何をしたいの?」ってことだけど.
この回答への補足
アドバイスありがとうございます。
以下のようなフローを考えております。
1,test.nicdfからマウント情報とネットワーク情報を取り出す
2,取り出したデータをマウント情報とネットワーク情報に振り分ける
3,192、127で始まる文字をネットワーク情報とする。
4,それ以外の文字列をマウント情報とする。
5,dfで取得したマウント情報と入力したマウント情報を比較する。
6,ifconfigで取得した情報と入力したネットワーク情報を比較する。
以上です。
No.1
- 回答日時:
そりゃ test に grep なんて演算子はないからエラーになるだろうよ.
で, それは何を意図したものなの?
あと, 究極的には何をしたいの?
この回答への補足
ご指摘の箇所を、
if [ ${LINE} grep "192" ]
から
if ${LINE} grep "192"
に変更してみましたが、下記エラーが発生します。
大変申し訳ありませんが、私、超初心者なため
失礼な返答で申し訳ありません。
何卒ご教授の程よろしくお願いします。
$ ./test.sh
210.175.250.212
./test.sh: line 6: 210.175.250.212: command not found
NEXT
/dev/mapper/VolGroup00-LogVol00
./test.sh: line 6: /dev/mapper/VolGroup00-LogVol00: 許可がありません
NEXT
/dev/hda1
./test.sh: line 6: /dev/hda1: 許可がありません
NEXT
tmpfs
./test.sh: line 6: tmpfs: command not found
NEXT
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Vine Linux でFloppyの中身が認...
-
マウントしたUSBメモリに書き込...
-
linux下でfdisk実行時のエラー1...
-
Redhat9のHDDにマウント
-
knoppixでHDがマウントできない
-
LinuxでUSBをマウントできない
-
Dirコマンドでフォルダ内ファイ...
-
ファイル名についている「-」と...
-
TOPコマンドで表示するCPU使用...
-
スクリプトのエラー「unexpecte...
-
エクセルの表にヘンな枠が・・・
-
貴方のモットーを教えて下さい...
-
エクセルからアクセスのプロシ...
-
SONYの音楽ソフト「x-アプリ」...
-
コマンドプロンプトから別マシ...
-
bashでシングルクォート内の変...
-
net use /d の強制実行
-
UNIX コマンドにおける # や円...
-
ラズパイで『’test.service’をs...
-
Linux環境 grepで改行コード(CR...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Linux(Fedora)で外付けHDDが...
-
VirtualBox 7のゲストOSでの物...
-
LinuxでUSBをマウントできない
-
LinuxのOSノートパソコンで外つ...
-
マウントしたUSBメモリに書き込...
-
KNOPPIXでHDDを修復させたいで...
-
linux下でfdisk実行時のエラー1...
-
umountしないでシャットダウン...
-
LinuxでUSBメモリを使うには
-
SDカード(fat32)が 読み込み...
-
外部ドライブにマウントできな...
-
パーティションをマウントでき...
-
fsckを実行したらファイルシス...
-
/etc/fstabの編集について
-
マウント関数について
-
XPが起動しなくなりました…
-
Puppy (Linux) → (Windows) XP ...
-
UNIXマシンでハードディスク認...
-
ubuntu20.04 でディレクトリサ...
-
LinuxでDisk probeのようなソフト
おすすめ情報