GNU/Linux >> Linux の 問題 >  >> Linux

bash/Makefileの二重ドル記号の意味は何ですか?

gnu make 公式ドキュメントによると:

<ブロック引用>

レシピ内の変数と関数の参照は、メイクファイル内の他の場所の参照と同じ構文と意味を持ちます。また、同じ引用規則があります。レシピにドル記号を表示する場合は、ドル記号を 2 倍にする必要があります (「$$」)。ドル記号を使用して変数を導入するデフォルト シェルのようなシェルの場合、参照する変数が make 変数 (1 つのドル記号を使用) であるか、シェル変数 (2 つのドル記号を使用) であるかを明確にしておくことが重要です。 /P>

要するに:

  • makefile 変数 => ドル記号を 1 つ使用
  • シェル変数 => 2 つのドル記号を使用

$$ は現在のプロセスの PID です。

$ ps -ef|grep $$
user       208465  200620  0 10:30 pts/4    00:00:00 bash

$ for number in 1 2 3 4 ; do \
    echo $$number ; \
done
208465number
208465number
208465number
208465number

この例には直接適用できません -- 示されたコードが $(shell ...) 経由で実行される場合を除きます ルールではなく:

2 次拡張が有効になっていると、make は 2 番目の処理フェーズでダブルドル自体を解釈する可能性があります。 (第 1 フェーズ:ファイルの読み取り、変数の設定。第 2 フェーズ:依存ターゲットの検索と呼び出し、ルールの実行)

これは、ターゲット名を持つ変数がファイルの後半でしか使用できない場合に、依存ターゲットを動的に指定できるようにするために使用されます。

https://www.gnu.org/software/make/manual/html_node/Secondary-Expansion.html を参照してください。


Linux
  1. Bashスクリプト(I)

  2. Readlineワードセパレーターとは何ですか?

  3. `$ _`の意味を理解しますか?

  1. PowerShell の Bash の cat -n に相当するものは何ですか?

  2. Linux での export コマンドの役割は何ですか?

  3. -e は bash シバンで何をしますか?

  1. awkスクリプトの最後にある1の意味は何ですか

  2. Linux での curl -k -i -X の意味は何ですか?

  3. 環境変数 XDG_VTNR とは何ですか?