Linux上でソースコンパイルのためのMakefileを書いてるんですが、インストール先をmake実行者に標準入力から入力させたいんですよ。
bashのreadコマンドで変数に入れられんのかな?と思って以下のように書いて実行しましたがうまく行きません。
-------------------------------------------------
install :
@read -p "install dir << " DIR
cp -p ${FILE} ${DIR}
-------------------------------------------------
echoさせてみると${DIR}は空っぽみたいです。
どなたか、書き方を教えてください。
No.2ベストアンサー
- 回答日時:
makeでは実行行は1行ずつ、sh -c "行内容" のようにして実行されるので、次の行に変数を引き継ぐことは出来ません。
install:
@read -p "install dir <<" DIR;cp -p ${FILE} $${DIR}
のように1行にすればOKです。$${DIR}と$を重ねるのは、make が sh に渡す前に変数展開してしまわないようにするためです。
ただし、上記のようにすると、cp まで @ が効いて表示されないので、表示したければ、
@read -p "install dir <<" DIR;echo cp -p ${FILE} $${DIR};cp -p ${FILE} $${DIR}
ありがとうございました。これで解決です!
とあるモジュールのインストール先がそれぞれ使うユーザーによって異なるというもので、単にmakeした後で勝手にcpしてもらっても良かったんですが、使う側の技術レベルがまちまちなんで親切機能をつけてやりたかったんですよ。感謝!
No.1
- 回答日時:
make で対話的な処理を行うのはあまり一般的ではありません。
インストール先をユーザに入力させたいのであれば、make に '=' を含む引数を渡すと、変数指定であるとみなされるので、上記の例なら
host% make install DIR=/usr/local/foo
などとさせる方法がありますが、それではダメでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux Linuxについて質問です。 以下のような設定をしたMakefileを作成するにはどう記述すればよい 1 2023/02/03 20:10
- UNIX・Linux 実行の仕方及び実行結果が分かりません。 2 2022/11/17 19:31
- Excel(エクセル) フォルダ内の全ブックのシート名を変更したい 7 2022/09/22 21:34
- Visual Basic(VBA) VBA★PDFをPDFアプリで印刷しようと思っていますが上手くゆきません 1 2022/06/06 22:04
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) シートをコピーする下記記述でダイアログを用いた記述がわかりません?( A = Dir(ThisWor 4 2022/08/22 12:26
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- C言語・C++・C# Makefileのechoの展開について 2 2022/07/26 07:35
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチファイルで以下のような...
-
コマンドプロンプトのエラーに...
-
バッチファイルの内容を表示さ...
-
コマンドプロンプトをウインド...
-
「読み取りと実行」と「読み取...
-
メッセージを他のPCに出したい
-
Excel VBA ステップインが途中...
-
VScodeのエラー解決法 Pythonの...
-
エクセル フォルダの画像を画...
-
exeファイルを実行するとコマン...
-
VBAでバッチファイルを1つ実行...
-
VBscriptが起動しない?
-
Excel VBAで複数のバッチファイ...
-
VBScriptでコマンドプロンプト...
-
【VB.NET】exeを実行すると「発...
-
フォルダを閉じる
-
VBAから複数のバッチファイルを...
-
ログオフ状態の時にバッチを実...
-
gccのプロファイラで時間が取得...
-
ExcelのVBAが特定のPC上でのみ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドプロンプトのエラーに...
-
exeファイルを実行するとコマン...
-
バッチファイルの内容を表示さ...
-
「読み取りと実行」と「読み取...
-
[teraterm] waitコマンドで停止...
-
VBscriptが起動しない?
-
エクセル フォルダの画像を画...
-
Excel VBA ステップインが途中...
-
PDFファイルを開き、印刷し、閉...
-
バッチファイルで以下のような...
-
VBScriptでコマンドプロンプト...
-
VScodeのエラー解決法 Pythonの...
-
バッチファイルが不正終了して...
-
複数のbatファイルを自動実行し...
-
これってパソコンの最適化が完...
-
pythonスクリプトを管理者権限...
-
VBS実行時にコマンドプロンプト...
-
ネットワーク名が見つかりません
-
メッセージを他のPCに出したい
-
VB.NETでのDOSコマンドを実行に...
おすすめ情報