Makefileからシェルスクリプトにパラメータを渡す「コマンドが見つかりません」

Makefileからシェルスクリプトにパラメータを渡す「コマンドが見つかりません」

info.propertiesこの属性を含むファイルがあり、MY_NAMEそれを自分で使用できますMakefile。試しましたが、myScript.shファイルから直接プロパティを使用することはできません。

そのため、その属性をパラメータとしてに渡したいと思いますmyScript.sh。以下を行っています。

makeファイルから:

my_stage:
    chmod 777 myScript.sh && ./myScript.sh $(MY_NAME)

myScript.shには次のものがあります。

#!/bin/bash -e
source .build/utils.sh

MY_NAME=$1
echo "MY_NAME=${MY_NAME}"

ただし、常に次のエラーが発生します。

chmod 777 myScript.sh && ./myScript.sh My-name-Mariana
.build/utils.bash: line 596: My-name-Mariana: command not found
make: *** [test] Error 127

この問題をどのように解決できますか?

修正する:

私はパラメータを実行しようとしていることを知っており、.build/utils.bashエラーでこれを見ることができます。しかし、そのファイルは私のコードプロジェクトの一部ではないため、ファイルがないため変更できません。

答え1

スクリプトの596行目でこれをコマンドで呼び出して.build/utils.bashみます。My-name-Marianaリテラルまたはで$1存在しないため、実行はすぐに失敗します(-eフラグのためbash)。

.build/utils.bash: line 596: My-name-Mariana: command not found

解決策はコードを修正することです。まだここに提供していないので、具体的な提案をすることはできませんが、関連する文脈に合わせて質問を更新すると、誰かが喜んでそうしてくれると確信しています。

答え2

あなたのスクリプトはソースを提供できるので、.build/utils.bash実際にできる読む。たとえば、less .build/utils.bashMakefileを含むディレクトリで試してみてください。

変更せずに実際の問題を解決するには、変数に内容を割り当ててから、.build/utils.bashコマンドを使用して -$1MY_NAMEshift$1今後あなたsource .build/utils.sh

ただし、空の文字列utils.bashを受け取ると、$1失敗したり他の操作を実行したりできます。utils.bashこれについて文書を読んだり、文書を読まなくても何を期待しているのかわかりません。

関連情報