• ベストアンサー

[UNIXコマンド] eval教えて下さい。

evalって、結局なんのためにあって、どのように使うと便利なのか良く分かりませんでした。(一応manでは見てみましたが・・・) たしか見た例では eval `$path -uniq` ってあったと思います。 あわせて説明して頂けるとさいわです。

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

  • ベストアンサー
回答No.2

仕様の違うシェルはあまりないと思いますが、一般的なシェルでは eval echo $"$baz" のevalを省略すると、 echo $"PATH" の意味になり $PATH という文字列が表示されるだけで、PATH変数の内容は表示されません。 ぜひためしてみてください。

lts107
質問者

お礼

お礼遅くなりましたが、ありがとう御座いました。 自分でやってみてなんとなくですが分かりました。

その他の回答 (2)

  • 1Yen
  • ベストアンサー率28% (11/39)
回答No.3

shell スクリプトを勉強するには rc ファイルを見ると面白いと思います。 私が初めて eval と出会ったのは FreeBSD の rc.network でした(^^;;;;;

参考URL:
http://www.jp.freebsd.org/cgi/cvsweb.cgi/src/etc/Attic/rc.network?rev=1.74.2.43&content-type=text/x-cvsweb-markup&hideat
lts107
質問者

お礼

有り難うございました。

回答No.1

たとえば、文字列を組み合わせて変数名を作り出し、その変数を使いたいときに利用できます。 foo=PA bar=TH baz=$foo$bar eval echo $"$baz" eval "$foo${bar}2"=abc echo $PATH2 という例でわかるでしょうか? ご質問の例は不正確なようでわかりません。このままではエラーです。

lts107
質問者

補足

お返事ありがとう御座います。 私が書いた例ですが、うる覚えで書いたので 気にしないで下さい。すいません・・・ で、お答え頂いた中からさらに質問させてください。 1.foo=PA 2.bar=TH 3.baz=$foo$bar 4.eval echo $"$baz" 5.eval "$foo${bar}2"=abc 6.echo $PATH2 3行目までは理解できます。 4行目を抜いて、5,6行目を実行すると 結果は"abc"が表示されると推測されます。 4行目の意味がよく分かりません。 逆に4行目を %echo $"$baz" としただけではダメなのでしょうか? お手数ですが、また宜しくお願いします

関連するQ&A

  • unixコマンドについて

    ユニークカウント uniq -c とすると、 カウント数<スペース>カウント対象物 例)  10 ○○△△   9 ○□ ・・・ というデザインで出力されると思いますが、 この カウント数とカウント対象物の間のスペースをタブ区切りに変更するもっとも簡単なコマンドを教えてください。 なお、カウント対象物の中にもスペースが含まれており、そのスペースはタブ区切りにしたくはないので、あくまでも、カウント数とカウント対象物の間だけを変換したいのです。 よろしくお願いいたします。

  • eval()を使わずに数値を取得し計算する方法

    ある数値計算をするプログラムを作っています そのプログラムではeval()を使っています 某書籍や色々javariptを勉強しているサイトを参考にさせていただいてますが そこではeval()はあんまり使うなとか、普通は使わないとか書かれていました 多用すると動作が重くなるとか、危険だから何とか… しかし、自分が作成しているプログラムではevalがどうしても必要となってしまいます 簡単なプログラム例です function tas(){ gk=0 ~~~~省略~~~~ gk=eval(a.value)+eval(b.value); aとbに数字を入力して足し算の答えをを出力するプログラムの一部です (この時、答えの出力先はプログラムを端折っていますが用意されています) a=1 b=2に入力したとして この時eval()を使わずa(b).valueのみにすると 答えが12と連なって表示されてしまいます ただこの理由は自分でも解っています そしてこれを数値として取得し計算させるためにはeval()が必要となってしまいます 現状、自分の知識と経験では… もしeval()を使わずに数値を取得し計算する方法があれば教えて下さい

  • 必須のUNIXコマンドとは

    ある事情で、ゴールデンウィーク明けまでにUNIXコマンドをある程度使えるようにならなければならなくなりました。 一応、コマンド集は買ってきたのですが、これを全てマスターするのはちょっと無理っぽいです。 そこで、とりあえず、このコマンドは知っておけ、というのがありましたら教えていただけませんでしょうか。 用途は主にLANの管理で、webサーバ、メールサーバ、ちょっとしたシェルスクリプトの保守と行ったところです。 MS-DOSのバッチファイルとかの経験はありますので、コマンドラインに対する拒絶反応とかはありません。 また、ディレクトリ構造とかマウントとかタスクとかログインとかの概念については理解しているつもりです。 細かいオプションとかパラメータについてはコマンド集を見たり、MANで探ったりします。

  • csh(Cシェル)のevalに関して

    evalを用いてインクルード的な事を行いたいのですが、「コマンドが見つかりません」が出てきて困っています 原因はなにがあるのでしょうか? 色々ネットで調べて同じように記述したつもりなのですが csh初心者で申し訳ありませんが 使い方が悪いのか、環境が悪いのか?判断できません 環境は別の人に作って貰ったんで、環境なら環境から勉強していきたいと考えてます ■TEST010.csh #!/bin/csh echo "TEST010-Step0010" eval `./TEST000.csh` echo "TEST010-Step0020" echo " set root_path $root_path;" echo "TEST010-Step0090" ■TEST000.csh #!/bin/csh set lcmoji01 = /export/home/tbn/km echo "set lcmoji01 $lcmoji01;" ■実行結果 > csh TEST010.csh TEST010-Step0010 ^M: コマンドが見つかりません。 TEST010-Step0020 lcmoji01: 未定義の変数

  • コマンドが持つmanのセクション一覧

    あるコマンド(例 crontab)の持つmanのセクションを一通り読みたいと思ったとき1~9まですべて調べてみるのは大変なので何番と何番のセクションがあるかを知りたいときがあります。 この場合、どうしたらよいでしょうか? ※manの関連項目の章を見るのも手だと思いますが、これだと関連しているのに出ない場合があります。(例 man manでやってもman(7)が関連項目にでてこない)

  • LINUXコマンドのチュートリアル集を探しています。

    less, topなどよく使うコマンドにもっと詳しくなりたいのですが、これらのコマンドのチュートリアル的なものはありますでしょうか? manだけでは、具体的な使用例がない(もしくは少ない)ため、限界があります。

  • UNIXのコマンドを教えて下さい。

    AAAAという名前のテキストファイルにBBBBという文字列が含まれる行の最後に CCCCの文字列を追加したい場合、どのようなコマンドを使ったらよいでしょうか?

  • UNIXのコマンド

    こんにちは。 UNIXのコマンドに関してお聞きしたい事があります。 カンマ(;) パイプ(|) の使い方の違いについて教えてください。 2つともコマンドを連続で使えるようにするものだと思っているのですが。 例1) # cd /tmp ; pwd 例2) # more syslog.log | grep "error" 分かるか方いたら教えてください。

  • UNIXのコマンドについて

    UNIXのコマンドについて教えて頂きたいのです。 現在業務でVMSのサーバーを使っていますが、UNIXの端末からVMSサーバー上のプログラムを直接起動させたいのです。 「remsh」というコマンドを使って、DIRは成功したのですが 起動させたいプログラムは、実行できませんでした。 このため「remsh」以外で、UNIX端末から直接VMSサーバーの プログラムを起動出来るコマンドを教えて頂きたく 質問しました。 当方UNIXは素人ですので、宜しくご教授ください。

  • UNIXコマンド

    UNIXのviコマンドについてなのですが、 指定文字以降を置換する方法を考えているのですが、わかりません。sedを使うと思うのですが、わかる方いましたら教えていただきたいです。