- ベストアンサー
シェルスクリプトで複数の変数から値を取得する方法
- 下記のシェルスクリプトを使用して、複数の変数から値を取得する方法を説明します。
- 変数にはネットワークアドレスが2つ入っており、それぞれ192.168.0.1と127.0.0.1です。
- 正しいスクリプトを使用することで、変数から値を取得しエラーを回避できます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
「for」 詳細な使いかたはbashのマニュアルを見てください。 > done < ${NIC} リダイレクトの意味、わかってますか? 例えば cat < 192.168.0.1 てやったらどうなると思ってますか? 余談: ここにあるシェルスクリプト関係の質問と見てると、やたらと while read ~ が使われているんですよね。 なんでなんでしょう?
その他の回答 (2)
- 0909union
- ベストアンサー率39% (325/818)
一つの要因を発見しました。 http://program571.blog91.fc2.com/blog-entry-178.html このような くそ サイトのサンプルを誤って解釈しているのが主な原因ですね。 >NIC= >192.168.0.1 >127.0.0.1 本当にこのようにセットされているなら変数の値に改行マークがあることになる。 http://www.geocities.co.jp/geo_sunisland/input_output.html ここに書かれているような基本的な事を理解するまえに前述のサンプルを変えると、今回の事件になるようだ。 1行読みこむコマンド。 ちゃんと man などを使ってリファレンス読み、動作を理解しましょう。No2で書いたように、echoのオプションで改行を無視すればいいわけです。 http://www.geocities.co.jp/geo_sunisland/index.html なお、このURLのサイトが、それほどいいわけではないが、基本的な部分をしっかり説明している。本来、Linuxのコマンドバージョン(シェル)を理解し、それぞれのディストリビューションのリファレンスサイトを検証してください。それぞれに多少違う。 シェルなどはUNIXべーすなので、それぞれのLinuxでコマンドやシェルが追加されているだけです(Cで作られている事が多い)。 変数の値の組み換えは、 printf (or echo) $var | sed xxxxxxxx | printf $var | nawk などいくつもやり方がある。paste, tr も便利なツール。 オプションをしっかり勉強しよう。
- 0909union
- ベストアンサー率39% (325/818)
>ここにあるシェルスクリプト関係の質問と見てると そうなんです。あやしいでしょう。かなり意図的なものを感じます。 このサイトの関係者、特に投稿数を増やすプロジェクト関係(毎年、似た質問が繰りかえされている)、 特定の学生が、研究している(きっとだめな学生でしょう)、 特定のあほ社会人が、仕事の暇で投稿している(志望は開発だが事務職についている)、 の類でしょう。 ちなみに予測では、標準入出力の自動入力、書き込みをやりたいのか、それを理解していないのかです。 たぶん EOF を理解していないと思います。 でそれを変数値の文字列切り出しや、データーの加工をしたいなんて、裏テクを引き出したいのでしょう。 通常知ってのとおり、sed , nawk, tr, paste, printf, echo, grep, find, for を駆使して使えば、ほぼできないことは、何もないですよね それを標準入出力のコマンドで行う事自体無知か、挑戦者なんでしょう。 たとえば、echo のオプションによってLF LNを無視したり生かしたりしますよね(printfも同じ)。それで、1行であったり複数行であったりと。 その辺の基本コマンドをならうと意味不明なコードはなくなると思うのだが。