シェルスクリプトで実行されているコマンドが見つかりません。

シェルスクリプトで実行されているコマンドが見つかりません。

私はWindowsでgit-bashを実行しています。私が直面している問題は、WindowsよりもNIXに関連しているようです。シェルスクリプトがあります。

build.sh

myProject="../myProject/"
build="gulp build"

cd "${myProject}"
pwd
"${build}"

このスクリプトを実行するとエラーが発生します。

gulpビルド:コマンドが見つかりません

シェルから直接「gulp build」を実行するときに同じコマンドを手動で実行すると、すべてがうまく機能します。次のようにスクリプトを実行しようとしています。

. build.shそしてただbuild.sh

どちらにしても同じエラーが発生します。 gulp / npmにアクセスしてスクリプトを実行するには?スクリプトを受け取りましたが、なぜ失敗しますか?

答え1

引用符は"${build}"単語の分割を防ぐため、引数を使用して検索するのではなく、名前にスペースを含む実行可能ファイルを検索する書き込み(引用符を使用)と"gulp build"同じ効果があります。gulp buildgulp buildgulpbuild

最後に、スクリプトの最後の行は次のようになります。

${build}

答え2

引用しないでください"${build}"gulp buildこの場合、コマンドを予測し(内部にスペースを含め)、そのようなコマンドが存在しないと正しく報告します。

ただ行ってみてください${build}。その後、シェルはそれをコマンドと引数として扱います。

myProject="../myProject/"
build="gulp build"

cd "${myProject}"
pwd
${build}

関連情報