web-dev-qa-db-ja.com

Makefileからシェルスクリプトに引数を渡す "コマンドが見つかりません"

info.propertiesファイルがあり、このMY_NAMEプロパティがあり、このプロパティをMakefileで使用できます。私はすでに試しましたが、myScript.shファイルでそのプロパティを直接使用することはできません。

そのため、このプロパティを引数としてmyScript.shに渡そうとしています。そして私はこのようにしています:

メイクファイル:

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が私のパラメータを実行しようとしていることを知っています、私はエラーでそれを見ることができます。しかし、は私のコードプロジェクトの一部ではないので、持っていないので、そのファイルを変更することはできません。

2
Ninita

スクリプトは_.build/utils.bash_をソースとすることができるため、実際にそれを読み取ることができることがすでに証明されています。たとえば、Makefileを含むディレクトリで_less .build/utils.bash_を試してください。

_.build/utils.bash_を変更せずに実際の問題を修正するには、_$1_の内容を_MY_NAME_変数に代入してから、shiftコマンドを使用して_$1_から削除します。 SOMECODE)__-beforeあなた_source .build/utils.sh_。

しかし、その後_utils.bash_は_$1_を空の文字列として受け取り、失敗するか別のことを行う可能性があります-_utils.bash_またはそれに関するいくつかのドキュメントを読まないと、何を知ることが不可能になりますそれは期待しています。

0
telcoM

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

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

解決策は、コードを修正することです。ここでは提供していませんので、具体的な提案はできませんが、関連するコンテキストで質問を更新していただければ、喜んで誰かが提供してくれると思います。

2
roaima