9

My script code is:

var="/some/path"
cp "$var*" "/another/path"

Then it throws:

cp: cannot stat '/some/path/*': No such file or directory

I have tried this and got the same error:

cp "${var}*" "/another/path"

Finally, I solved this problem by:

cp "$var"* "/another/path"

This time the command executes successfully, but I'd like to know WHY.

Could you please give out an explanation ?

1 Answer 1

14

When you use "$var*" the output will be /some/path*, where * is considered as a character (not as a wildcard, since it's inside the double quotes - see globs). So in your case (/some/path/*), cp is searching for a file/folder named * inside the path directory.

When it's outside the double quotes it's considered as a wildcard, meaning anything that starts with path (path1, path2 etc).
Or if path/* (anything that is on that directory).

2
  • globs are globs, not regular expressions
    – CervEd
    Jun 1 at 14:39
  • 1
    @CervEd thanks for your message! Changed it to wildcard (was not familiar if it was a wildcard or regex at the time of writing).
    – Erlis D.
    9 hours ago

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.