3

I'm running git-bash on windows. I feel the issue I'm facing is more of a NIX geared question than windows. I have a shell script:

build.sh

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

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

When I run this script I get error

gulp build: command not found

When I run "gulp build" directly in the shell, running these same commands by hand then everything works. I tried executing the script via:

. build.sh and just build.sh

Same error either way. How can I run a script that can access gulp/npm? Why does this fail even when I am sourcing the script?

1
  • try just ${build}?
    – user17530
    Mar 18, 2016 at 13:38

2 Answers 2

11

Quoting "${build}" prevents word splitting, so it has the same effect here as writing "gulp build" (with quotes), which would search for an executable called gulp build with a space inside the name; and not as writing gulp build, which executes gulp with a build argument.

Concluding, the last line of your script should be:

${build}
7

Do not quote "${build}". As it expects in such a case gulp build command (with a space inside) and reports rightfully such command does not exist.

Execute simply by ${build}. Then shell will treat it as a command and arguments.

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

cd "${myProject}"
pwd
${build}
2
  • That solved it. Can you link me/provide more detail on when to use quotes? I'm finding it to be a difficult decision. Mar 18, 2016 at 13:43
  • 1
    I just added more info in the answer, but the general rule is it will treat the quoted string as one piece. If an argument requires a space inside, then you should quote.
    – techraf
    Mar 18, 2016 at 13:45

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .