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で質問しましょう!
似たような質問が見つかりました
- UNIX・Linux Linuxのbash環境下です。 1 2022/11/27 12:31
- その他(プログラミング・Web制作) bashのgrepで複数の検索、かつスクリプト内で改行する方法を教えてください。 1 2022/10/06 20:09
- UNIX・Linux swapが機能しているかの確認について 2 2022/09/18 13:17
- UNIX・Linux 次の要件を満たすにはどのように修正したらよろしいでしょうか 1 2022/11/24 20:57
- UNIX・Linux bashでブランク(空白)を検索文字列として指定する方法 1 2022/04/13 22:29
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
- UNIX・Linux AWSのEC2のZabbixユーザーでawscliコマンドが実行できない状態を解決する 1 2022/12/06 22:17
- UNIX・Linux VirtualBox ゲストOSにPC内蔵HDDのパーティションをマウントする方法は? 2 2023/05/06 22:52
- C言語・C++・C# c言語の問題です 2 2023/07/21 10:51
- PHP PHP一覧表示した項目にリンクをはりたい 1 2023/07/12 17:08
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
LinuxでUSBをマウントできない
-
ハードディスクのマウントで文...
-
Linux(Fedora)で外付けHDDが...
-
SDカード(fat32)が 読み込み...
-
FTPからシンボリックリンクを参...
-
見えなくなったハードディスク...
-
Fedora8をインストールしたPS3...
-
LinuxでFDDが認識しないので困...
-
/etc/fstabの編集について
-
FDDを一般ユーザで $ mount /fl...
-
linuxブートイメージをUSBにコピー
-
ハードディスク完全コピー マ...
-
Dirコマンドでフォルダ内ファイ...
-
TOPコマンドで表示するCPU使用...
-
エクセルの表にヘンな枠が・・・
-
スクリプトのエラー「unexpecte...
-
batである文字列内に特定の文字...
-
pingは正常なのにtracerouteで...
-
Linux環境 grepで改行コード(CR...
-
テキストファイルから最終行の抽出
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
LinuxでUSBをマウントできない
-
Linux(Fedora)で外付けHDDが...
-
VirtualBox 7のゲストOSでの物...
-
マウントしたUSBメモリに書き込...
-
/etc/fstabの編集について
-
linux下でfdisk実行時のエラー1...
-
LinuxでFDDが認識しないので困...
-
外部ドライブにマウントできな...
-
LinuxのOSノートパソコンで外つ...
-
FTPからシンボリックリンクを参...
-
HDDのマウント方法を教えてくだ...
-
CentOSのHDをKnoppix5からmount...
-
linuxでのmountができません
-
umountしないでシャットダウン...
-
android機をLinuxにマウントで...
-
KNOPPIXでHDDを修復させたいで...
-
MACのターミナルコマンド教えて!
-
ハードディスクのマウントで文...
-
knoppixでUSBメモリーに書き込...
-
e2labelで指定したラベルは何に...
おすすめ情報