• 締切済み

Makefileのキー入力処理に関して教えてください。

Makefileのキー入力処理に関して教えてください。 以下のようにMakefile内のallターゲットより前の時点で、 自作のmycmd(bashコマンド)を呼び出し、キー入力をさせたいのですが、 mycmd内のechoが表示されません。表示させるにはどうすればよいでしょうか? ◆Makefileの内容 ----------------------- RET=$(shell mycmd) all: 以下省略 ----------------------- ◆mycmdの内容 ----------------------- echo "1. HOGE" echo "2. PIYO" read keyin 以下省略 -----------------------

みんなの回答

回答No.1

echoの内容が表示されないのは、$(shell mycmd)の標準出力は変数RETに代入されるからだと思います。RETの値を確認してみてください。 実現したいことがよく分かりませんが、mycmdを実行したいのなら ----------------------- all: mytarget mytarget: ./mycmd ----------------------- とするのはどうでしょうか。(「./mycmd」の左にはタブが入ります)

参考URL:
http://www.ecoop.net/coop/translated/GNUMake3.77/make_8.jp.html#SEC80
inja025
質問者

お礼

確かにRETに設定されてました... 教えていただいた方法で何とかなりそうです。ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Linux Makefile変数の値をプロンプトから受けたい

    Linux上でソースコンパイルのためのMakefileを書いてるんですが、インストール先をmake実行者に標準入力から入力させたいんですよ。 bashのreadコマンドで変数に入れられんのかな?と思って以下のように書いて実行しましたがうまく行きません。 ------------------------------------------------- install : @read -p "install dir << " DIR cp -p ${FILE} ${DIR} ------------------------------------------------- echoさせてみると${DIR}は空っぽみたいです。 どなたか、書き方を教えてください。

  • ユーザー関数の外の変数は呼べない?

    以下のコードでpiyoを呼ぶには、hogeを渡すしかないのでしょうか? $hoge="piyo"; function func(){ echo $hoge; } func();

    • ベストアンサー
    • PHP
  • BCC5.5のMakeFileについて教えてください。

    小生、只今、WinXPSP3上でC言語を使い、BCC5.5.1でコンパイルしながらプログラミングを勉強しています。 今回質問させて頂きたいのがBCCのMakeFileについてです。 http://blog.tomnekosoft.com/tomnekosoft.php?itemid=645 上記のサイトから、BCCのMakeFileというものを始めて知り、 その内容を理解したいと思いました。 以下にそのMakeFileを記述させて頂きます。 # # make -f fb_sample.mak # # ここの箇所は理解できました。 CFLAGS = -c -w- -a4 -DWIN32 -tWC -IC:\bin\bcc55\include LFLAGS = /m /s /Tpe -LC:\bin\bcc55\Lib LIBS = fbclient_bor.lib CC = bcc32 LINK = ilink32 # この.SUFFIXESというのがわかりません。 .SUFFIXES: .c .obj .c.obj: $(CC) $(CFLAGS) $< # この下も一切わかりません。 fb_sample.exe: fb_sample.obj @echo c0x32.obj+ > link.arg @echo $? >> link.arg @echo $@ >> link.arg @echo $(LFLAGS) >> link.arg @echo $(LIBS)+ >> link.arg @echo import32.lib+ >> link.arg @echo cw32.lib >> link.arg $(LINK) @link.arg 以上です。 分からない場所は、.SUFFIXESとfd_sample.exeから始まる箇所です。 お忙しい中、申し訳ございませんが、先輩方ご教授宜しくお願い致します。

  • bashのexportによる環境変数設定に関して教えてくださいませ。

    bashのexportによる環境変数設定に関して教えてくださいませ。 複数のファイルに記述している環境変数設定を まとめて実行したい場合はどのようにすればよいでしょうか。 例えば、 ◆hogeファイルの内容 export AAA=aaa soruce ./piyo ◆piyoファイルの内容 export BBB=bbb この状態で、 source hoge とすると、 AAA=aaaは設定されているのですが、 BBB=bbbは設定されないようです。 source の中からsource の記述はできないのでしょうか? source ./piyo 部分を ./piyo にしてもダメでした。

  • PHPの標準入力処理について

    お世話になります。 RedHat7.3に標準で入っているphp4.1.2を使って コマンドライン用の対話的なツール作成を 考えておりますが、上手くいきません。 以下サンプルです。 >>test.php --------------------------------------- #!/usr/bin/php -q <?php set_time_limit(0); function read($length){ $input1 = fopen("php://stdin","r"); $input2 = trim(fgets($input1, $length)); fclose($input1); return $input2; } echo "enter your name \n"; $name = read(64); echo "your name is $name \n"; echo "enter your age \n"; $age = read(64); echo "your age is $age \n"; ?> -------------------------------------------------- 上記test.phpに実行権を与え $ ./test.php を実施すると以下のようになる予定でした 1.enter your name を出力 2.標準入力から名前(hoge)を入力 3.your name is hoge を出力 4.enter your age を出力 5.標準入力から年齢(24)を入力 6.your name is 24 を出力 このようにはならずに実際は 2 -> 5 -> 1,3,4,6 と標準入力が先でecho文が最後に ドバットと出力されてしまいます。 出力される内容は、入力した文字が きちんと反映されています。 どうすれば思い通りの順番で 処理されるのかご存知の方が おりましたらご教授ください。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • Bashでキーボードから入力は?

    Linux+BashでShellスクリプトを作成しています。 「削除しますか?(Y/N)」のメッセージを表示した後、 Yを押すとファイルを削除するようにしたいと思っていますが、Bashでキーボードから文字を入力して文字がYかNか判断するようなことはできるのでしょうか。 具体的なソースがご存知の方教えてください。 よろしくお願いします。

  • makefile でファイルをコピーする方法

    makefileであるディレクトリ(SRC_DIR)以下のファイル(ディレクトリ)のうち「CVS」以外を、別のディレクトリ(DST_DIR)へコピーしたいのですが、どのように記述したらよいのでしょうか? 記述例(途中): SRC_DIR = ./src DST_DIR = ./dst FILES = $(shell ls $(SRC_DIR)); FILES_TO_REMOVE = CVS FILES_TO_COPY = $(filter-out $(FILES_TO_REMOVE), $(FILES)); # ↑ ここまでで、コピーすべきファイルのリストが作成できた # ↓ ここからどのように記述したらいいか? all:     

  • arsort の key について

    こんにちは、Blackwinglsです。 ちょっと気になったので質問いたします。 以下のデータのポイント表があります。 データはSQLで order by name で取り出してます。 name point H氏 50p F氏 8p D氏 8p K氏 6p これを以下のscriptで出力すると <?php arsort($point); $count = 1; while(list($key,$val) = each($point)) { echo $key; echo ":"; echo $name[$key]; echo ":"; echo $val echo "<br>"; $count++; } ?> 3:H氏:50 2:F氏:8 1:D氏:8 4:K氏:6 と表示されますが、同じscriptを <?php arsort($point); $count = 1; while(list($key,$val) = each($point)) { echo $key; echo ":"; echo $name[$key]; echo ":"; echo $val echo "<br>"; $count++; } ?> <?php arsort($point); $count = 1; while(list($key,$val) = each($point)) { echo $key; echo ":"; echo $name[$key]; echo ":"; echo $val echo "<br>"; $count++; } ?> のように立て続けに書くと、 3:H氏:50 2:F氏:8 1:D氏:8 4:K氏:6 3:H氏:50 1:D氏:8 2:F氏:8 4:K氏:6 のように、同じ $point の場合、氏名が都度入れ替わるようです。 これって正常な動きなのでしょうか? order by name なので、氏名順に常に表示される気がするのですが・・・? 最近、php4からphp5に変更したら出たような気がするのですが、私の気のせい? どなたか情報お持ちの方、ご示唆くだされば幸いです。

    • ベストアンサー
    • PHP
  • 複数コマンドを実行するには

    一回で完結しないコマンドはどのように書けば、実行できるのでしょうか? たとえば、下記のようにコマンドを実行して、受信メールを表示させたいのですが、方法が分かりません。 ------------------------- telnet localhost pop3 user hoge@hoge.com pass hoge retr 1 ------------------------- 一回で完結していないので、当たり前かもしれませんが、 下記のようにやっても、エラーがでてしまいます。 ------------------------- shell_exec('telnet localhost pop3'); shell_exec('user hoge@hoge.com'); shell_exec('pass hoge'); echo shell_exec('retr 1'); -------------------------

    • ベストアンサー
    • PHP
  • フォームの入力チェック処理について

    確認ボタンを押しエラーがあればエラーメッセージを出力し なければ確認画面に移りたいと考えているのですがうまくいきません。 具体的には 1:入力フォームを表示 2-1:送信ボタンを押しエラーがあればメッセージ出力 2-2:送信ボタンを押しエラーがなければhiddenのname="mode" value="confirm"を渡す hiddenの値はswitchのcase文の値でconfirmで確認画面を表示します。 入力フォームを表示する段階にてhiddenを渡しているのが原因なのは わかるのですがエラーチェックを通す際の構文がわかりません・・・ また、hiddenを消すとエラーチェックが通るのですが例えば名前を入力 しメールを入力しない状態で 送信ボタンを押すとメールの入力を促すエラーメッセージが表示され名前の入力も消えてしまいます。 これは回避できるのでしょか? 見づらいかと思うのですが下記のソースです。宜しくお願い致します。 function input() { if(isset($_POST{"submit"})) { if (empty($_POST["name"])) { $error_message[] = "お名前を入力して下さい。"; } if (empty($_POST["email"])) { $error_message[] = "メールアドレスを入力して下さい。"; }if (count($error_message)) { echo "<p style=\"color: #ff0000\">入力内容にエラーがあります。</p>\n"; foreach ($error_message as $message) { echo "<p style=\"color: #ff0000\">" . "・$message" . "</p>\n"; } } } echo "<form method=\"post\" action=\"" . $_SERVER['PHP_SELF'] . "\">\n"; echo "<table border=\"1\">\n"; echo "<tr>\n"; echo "<td>お名前</td>\n"; echo "<td><input type=\"text\" name=\"name\" size=\"20\"></td>\n"; echo "</tr>\n"; echo "<tr>\n"; echo "<td>メールアドレス</td>\n"; echo "<td><input type=\"text\" name=\"email\" size=\"20\"></td>\n"; echo "</tr>\n"; echo "<tr>\n"; echo "<td>メッセージ</td>\n"; echo "<td><textarea name=\"msg\" rows=\"5\" cols=\"40\"></textarea></td>\n"; echo "</tr>\n"; echo "<tr>\n"; echo "<td colspan=\"2\"><input type=\"submit\" name=\"submit\" value=\"内容を確認\"></td>\n"; echo "</tr>\n"; echo "</table>\n"; echo "<input type=\"hidden\" name=\"mode\" value=\"confirm\" />\n"; echo "</form>\n"; }

    • 締切済み
    • PHP