• ベストアンサー

system から得た情報を変数に入れる方法

ysk6406の回答

  • ベストアンサー
  • ysk6406
  • ベストアンサー率40% (237/589)
回答No.1

OS環境が書かれていないのでちょっと自信ありませんが、 Windows 用の ActivePerl と Jperl で確認しました。 ---------- system() を使わずに、   $ls = `ls -l`; (←逆シングルクオートで囲む) というのはどうでしょう? これで、ls -l の結果を $ls に入れることができます。 ただし、最後の改行もそのまま入ってくるので、これを取り除きたい 場合は、   chop ($ls = `ls -l`); とすれば、うまくいきます。 コマンド実行の結果(正常/異常)も知りたい場合は、 この後で $? 変数を参照すればいいでしょう。試しに   chop ($ls = `ls -l`);    ←パスをいろいろ変えてみて…   print "---\n",$ls,"---\n";   print "Status $?\n"; で、やってみて下さい。

tol
質問者

お礼

うまく値を得ることができました。 ありがとうございます。 とても助かりました。

関連するQ&A

  • shでの環境変数参照方法

    bshスクリプト内で、環境変数を参照する方法及び、パスを有効にする方法を教えて下さい。 このシェルスクリプトを手動実行するとうまく環境変数を読めるのですが、cronにて自動実行する時には、環境変数 を読むことができません。 またこの時コマンドも見つからないとでるので、パスも効いてないようです。

  • システム環境変数が保存されない?

    質問させて下さい。 set Path=%Path%;C:\*** というコマンドをバッチファイルにして実行しているのですが、マイコンピュータのプロパティからシステム環境変数を確認してもセットしたはずのパスが登録されていません。再起動しても同様です。ちなみにシステムアカウントで実行しました。 上記のコマンドは一時的にセットするもので、永久保存するコマンドは別にあるのでしょうか? 宜しくお願いします。

  • system関数で一部のプログラムしか起動できない

    タイトルの通りです。 実行環境は、Apache2+PHP4です(玄箱・Debian)。 system関数を使ってあるプログラムの実行結果をそのまま出力したいと考えています。 しかし、できるプログラム(コマンド)と、できないコマンドがあるのです。 system('df -h', $retval);などというように、dfやlsなどは結果が出るのですが、hddtemp、自前のシェルなどはうまく結果が出ません。 ただ、$retvalは0が出力されます。 状況の切り分けのため、「whoami」を実行したところ結果がうまく出力され、「www-data」と出るので、rootからwww-dataにログインし、hddtempを実行してみたところ、「コマンドが見つかりません」と出ます。ちなみにwww-dataはログイン可能ユーザー?ではありません。(/homeにディレクトリのないユーザー) dfやlsなどはwww-dataユーザーでも実行可能でした。 つまり、dfやlsと同じような状況をhddtempや自前シェルに適用したいのですが、どうしたらよいでしょうか。 何かヒントをお願いします。

    • 締切済み
    • PHP
  • ユーザの環境変数、システム変数をコマンドプロンブトに一挙に表示させる方法は?

    宜しくお願い致します。 Windows2000を使用しています。 ユーザの環境変数、システム変数の一覧をコマンドプロンプトに 表示させる方法はないものでしょうか? 逐一、 $ echo %変数名% とやっていくしかないのでしょうか?

  • 外部CGIの実行結果を変数内に取り出したい

    こんにちは。 外部CGIの以下のような実行結果を、プログラム内(変数)に読み込むにはどうしたらよいのでしょう。 簡単そうなのにできないので・・。 「Content-type: text/html 文章」 外部プログラムが吐く上記のような内容を、普通に変数内に読み込みたいのです。 しかしopenでは実行前の、cgiの中身がそのまま出てしまいますし、 systemやexecコマンドでは、実行結果の内容が、変数に格納される前に、そのまま出力されてしまいます。 外部cgiの方を変更するしかないのでしょうか? どなたかお教えください。

    • ベストアンサー
    • Perl
  • コマンド実行結果を環境変数に代入する方法ありますか

    下記のとおりfindコマンドを実行すると結果が表示されます。 findコマンドの実行結果を直接環境変数に代入したいのですが、 できますでしょうか。 できれば「5」だけを環境変数に代入したいです。 よろしくお願いします。 C:\tmp>find /C "OPEN" aaa.txt ---------- AAA.TXT: 5

  • SSHをsystem関数で。

    SSHログイン先のコマンド結果出力と、SSHログイン先のプロンプトを表示させたいです。 Perlでsystemを使用してSSHログイン先でコマンド実行した結果とプロンプト表示のみ 出力したいのですが、下記ではうまくいきません。。。 system( ssh -q 10.x.x.x ; ls);  *ここでsshはパスワードやユーザーを聞かれないように設定済み。 *"-q"はsshのオプションで、SSHログイン時の出力をしない設定 *ログイン先シェルはcsh (求める出力結果)************** [sshログイン先prompt] ls結果・・・ ls結果・・・ [sshログイン先pprompt] ****************************** 不明確な部分等ありましたらすみません。。。 どうかご教授お願いいたします。

  • システム環境変数を使いたい

    コマンドプロンプトで、cdコマンドでカレントディレクトリを移動する際、 いちいちパスを入力するのが面倒だったので、環境変数というものがあるというのを知り、 マイコンピュータ右クリック→プロパティ→詳細設定→環境変数→システム環境変数→Path に、;c:\xampp\mysql\bin と新たに追加しました。 これを使ってcdコマンドを次のように入力しました。 cd Path 指定されたパスが見つかりません。 私のやった方法でシステム環境変数の設定は間違っていないでしょうか? また、cdコマンドの入力の仕方はこうで合っているのでしょうか?

  • ファイルの所有者だけを得るコマンドは?

    ファイルの所有者をユーザ名で取得するコマンドはないでしょうか。 目的は、シェルスクリプトの中で変数に代入して使いたいからです。 人間が見るためにはls -lでいいのですが、スクリプトの中で使用しようとするとsedで加工したり、ディレクトリ名を指定するとそのディレクトリ自体ではなくディレクトリ内のファイルが対象になってしまったりするので切り分けが面倒です。 ファイルの所有者だけが表示されるようなコマンドがあれば楽なのですが、そのようなコマンドはあるでしょうか? よろしくお願いいたします。

  • 【シェルスクリプト】awkの結果を変数に格納したいです。

    【シェルスクリプト】awkの結果を変数に格納したいです。 パイプを使って、3つのコマンドを実行し、変数に格納したいです。 command1 | command2 | command3 command2 には grep が、 command3 には awk が入ります。 よろしくお願いします。