make
パターンルールで、のような変数をエクスポートしたいと思います$(TargetLocation)
。$@
以下を試しましたが、エクスポートされませんでした。 bashスクリプトは実行可能です。
export $(TargetLocation); \
export $@; \
./EditHtml.sh;
${VarA}
私もこれを試しましたが(内部bashスクリプトの代わりに使用しました${TargetLocation}
)エクスポートされませんでした。
./EditHtml.sh VarA=$(TargetLocation); \
Bashスクリプトでこれらの変数を使用したいと思います。どんな提案がありますか?
答え1
値ではなく変数名をエクスポートする必要があります。
export
GNU Make ステートメントを使用して、すべての子プロセスの名前をエクスポートできます。
export TargetLocation
1つのルール値のみが必要な場合は、ステートメントは通常のシェル構文でなければなりません。
export TargetLocation="$(TargetLocation)"; \
./EditHtml.sh
この場合、変数の内容によっては引用符が必要になる場合があり、変数に任意の値がある場合は依然として脆弱です。一方、呼び出すユーザーの権限で make を実行すると、追加のリスクはありません。