シェルスクリプト外部からのデータ参照

このQ&Aのポイント
  • シェルスクリプトにおいて外部ファイルのデータを参照する方法について解説します。
  • 具体的な手順として、シェルスクリプト内で外部ファイルのパスを指定し、その中身を変数に代入することでデータを取得することができます。
  • また、dfコマンドを使用してファイルシステムの使用状況を表示する際にも、シェルスクリプト内でコマンドを実行し、その結果を変数に代入することで結果を取得することができます。
回答を見る
  • ベストアンサー

シェルスクリプト外部からのデータ参照

初心者で失礼があれば申し訳ございません。 お力を頂ければ幸いです。何卒よろしくお願いします。 以下に「hogehoge.nic」と「hogehoge.df」という外部ファイルがあります。 $ cat ./hogehoge.nic nic="210.175.250.212" $ cat ./hogehoge.df /dev/mapper/VolGroup00-LogVol00 /dev/hda1 tmpfs ====================================================================== 上記を呼び出したいシェルがあります。 $ cat ./hogehoge.sh #!/bin/sh NIC=/home/user/hogehoge.nic DF=/home/user/hogehoge.df echo ${NIC} echo ${DF} DF=`df -k` echo test df echo ${DF} ====================================================================== 実行結果 $ ./hogehoge.sh /home/user/hogehoge.nic /home/user/hogehoge.df test df Filesystem 1K-ブロック 使用 使用可 使用% マウント位置 /dev/mapper/VolGroup00-LogVol00 234410632 1869312 220441736 1% / /dev/hda1 101086 12004 83863 13% /boot tmpfs 516860 0 516860 0% /dev/shm ======================================================================= 上記実行結果ではなくて、hogehoge.shでhogehoge.nicとhogehoge.dfの中身を呼び出したい。 下記ファイルの中身を呼び出したいです。 $ cat ./hogehoge.nic nic="210.175.250.212" $ cat ./hogehoge.df /dev/mapper/VolGroup00-LogVol00 /dev/hda1 tmpfs

質問者が選んだベストアンサー

  • ベストアンサー
  • pakuti
  • ベストアンサー率50% (317/631)
回答No.1

cat ${NIC} cat ${DF} ではだめなんでしょうか? 変数に入れたいなら A=`cat ${NIC}` B=`cat ${DF}` とか

eos2kiss
質問者

お礼

ありがとうございました。 とても参考になりました。 今後もよろしくお願いします。

関連するQ&A

  • シェルスクリプト ファイルの読み取りとgrepのし

    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 =========================

  • partion imageを使用したCentos5のバックアップ

    partion imageを使用しCentos5のバックアップをしたいのですが、 partion image を起動すると、  hda1    ext3fs      101.94Mib  hda2 -unknown-      76.59 Gib  sda1 fat16           62.35Mib と表示され、hda2のファイルシステムが、-unknown-になってしまい、バックアップが実行できません。 Centosを起動しdf -h を実行すると  /dev/mapper/VolGroup00-LogVol00    74G ・・・  /dfv/hda1                      99M ・・・  tmpfs                         232M ・・・ と表示され、partition imageでは、[hda2」と表示された区画が、 「mapper/VolGroup00-LogVol00 」と表示されます。 これは、LVMが使用されているためだと思いますが、これが影響しているのでしょうか?

  • RHEL5のdump バックアップ

    お世話になっております。 質問どおりバックアップをテープ装置にとりたいです。 /dev/mapper/VolGroup00-LogVol00 /dev/mapper/VolGroup00-LogVol02 /dev/mapper/VolGroup00-LogVol03  の3つのパーテションを1つのテープにバックアップを取ろうと思っています。 その際、 dump 0uf /dev/st0 /dev/mapper/VolGroup00-LogVol00 dump 0uf /dev/st0 /dev/mapper/VolGroup00-LogVol01 dump 0uf /dev/st0 /dev/mapper/VolGroup00-LogVol03 の後、テープにデータとしては残るのは、上書きされて dump 0uf /dev/st0 /dev/mapper/VolGroup00-LogVol03 のみのデータだけでしょうか? 以前同じような質問がありましたが、どうかご教授ねがいます。 http://oshiete1.goo.ne.jp/qa1104482.html

  • ルートのパーティションのUse%が100%になった場合

    Redhat EnterPriseLinuxES4でdfコマンドを発行すると以下の結果が表示されます。 #df -H Filesystem Size Used Avail Use% マウント位置 /dev/mapper/VolGroup_ID_4409-LogVol1 1.1G 995M 8.5M 100% / /dev/sda3 104M 38M 61M 39% /boot none 1.1G 0 1.1G 0% /dev/shm /dev/mapper/VolGroup_ID_4409-LogVol2 520M 11M 483M 3% /tmp /dev/mapper/VolGroup_ID_4409-LogVol5 49G 2.8G 44G 6% /usr /dev/mapper/VolGroup_ID_4409-LogVol4 520M 297M 198M 61% /var /dev/mapper/VolGroup_ID_4409-LogVolHome 25G 110M 24G 1% /home 気になるのは[/]のUSE%が100%になっていることです。 ハード構成はDell製のPowerEdge840でハードRAID構成です。 基本的なアプリとしてApache,PHP,Vsftpd,MySQLぐらいです。 インストール手順についてはデフォルト設定で行いました。 この場合どのような方法で空き容量の確保を行えばいいのでしょうか? 調べた結果、KNOPPIXからCDブートを行ってQTPartedを試みたのですが、よく分からなかったので断念しました。 どなたかお分かりになる方おられましたら、ご教授の程宜しくお願いします。

  • HDDのmountについて。

    こんにちは。  先日、Linuxをインストールしたのですが、HDD(20GB)がmountできません。 因みに、9.1GBのDiskにOS本体が入っていて、追加で20GBのDisk(未マウント)が入っています。 dfでみるとこんな感じです。  [root@712400-lilwejzk ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup00-LogVol00 26802428 6507928 18932992 26% / /dev/hda1 101086 9176 86691 10% /boot none 387844 0 387844                         0% /dev/shm です。  fdiskなどのコマンドを使ってやってみましたがmountできませんでした。 mountする方法を教えてください。よろしくお願いします。

  • ディスク使用量監視スクリプトについて

    あるサイトから下記スクリプトを拾ってきました。 #!/bin/sh # 監視パーティション partition=/dev/mapper/VolGroup00-LogVol00 # ディスク使用率閾値(%) shikii=80 # 通知先メールアドレス mailaddress="hogehoge@hoge.jp" srvname=`hostname` subject="$srvname Disk space alert" maildata=`hostname && date && df -h` used=` df -h | grep $partition | awk '{ print $5 }' | sed -e '$s/.$//' ` if [ $used -lt $shikii ] then echo ok else mail -s "$subject" $mailaddress << MAILDATA $maildata MAILDATA fi 実行したところ[: -lt: unary operator expected と帰ってきて成功しません。 お分かりなる方教えてください。 よろしくお願いします。

  • 複数のスペースを1つのタブに置換できますか?

    失礼いたします。例えば、 Filesystem 1K-ブロック 使用 使用可 使用% マウント位置 /dev/mapper/VolGroup00-LogVol00             9522528 4278368 4752640 48% / /dev/sda1     101086 12072 83795 13% /boot tmpfs         257720 0 257720 0% /dev/shm 秀丸エディタやsakuraエディタでこの文字列の中の複数のスペースを 1つのタブに置換できませんか? どうかよろしくお願いします。

  • dfでディレクトリの容量が見れません

    RedHat Enterpriseです。 /home 以下の容量を調べようとして、以下のコマンドを打ちました。 [melrt@dose1 /]$ df -k Filesystem    1K-ブロック  使用  使用可 使用% マウント位置 /dev/mapper/VolGroup00-LogVol00             67862104 29859800 34555112 47%  / /dev/sda1        101086  12419   83448  13% /boot none          1037236    0  1037236  0% /dev/shm どうやらマウントされているものの容量が出ているみたいですが、どうすれば /home以下の容量を調べられるでしょうか。 初歩的な質問で申し訳ありませんが、よろしくお願いします。

  • dfコマンドについて

    dhコマンドの出力例です。 =========== Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup00-LogVol00 74G 2.1G 68G 3% / /dev/hdc1 99M 9.0M 85M 10% /boot none 125M 0 125M 0% /dev/shm =========== ●このうち、【/dev/mapper/VolGroup00-LogVol00】とはHDDのどの部分を示しているのでしょうか? ●また、Filesystemがnoneとはどういう意味でしょうか?デバイスファイルが/dev/shmなのであるはずがないと言う意味でしょうか?そうであるならば、/dev/shmとはHDDのどの部分を示し、なんの為にあるのでしょうか? ●/dev/hdc1と同じように考えてセカンダリのHDDのなかの何番目かに【/dev/mapper/VolGroup00-LogVol00】や【/dev/shm】が作成されていて特別の意味を示すためにこのように表示されていると考えてよろしいでしょうか? ご存知の方いましたら、よろしくお願いします。

  • パーティションを変更する方法を教えてください

    お世話になります。 一度設定したパーティションを変更したいです。 ▼環境 OS:RedHat ES4 Filesystem サイズ 使用 残り 使用% マウント位置 /dev/mapper/VolGroup_ID_20381-LogVol1 109G 314M 103G 1% / /dev/sda3 99M 13M 82M 13% /boot none 505M 0 505M 0% /dev/shm /dev/mapper/VolGroup_ID_20381-LogVol2 496M 11M 460M 3% /tmp /dev/mapper/VolGroup_ID_20381-LogVol5 78G 2.8G 71G 4% /usr /dev/mapper/VolGroup_ID_20381-LogVol4 496M 116M 356M 25% /var /dev/mapper/VolGroup_ID_20381-LogVolHome 41G 100M 38G 1% /home ここで /で割り当てた一部(10G)を /varに 割り当てたいのですがどのようにすれば可能でしょうか?  パーティションマジックなどの有償ソフトを使用せず行いたいです。 (再インストールしかないのでしょうかねぇ?) ちなみに vgdisplay は (一部抜粋) VG Size 232.69 GB PE Size 32.00 MB Total PE 7446 Alloc PE / Size 7442 / 232.56 GB Free PE / Size 4 / 128.00 MB です。 以上、よろしくお願いします。