In Bash, when I do:
foo="*" echo $foo It expands * to the contents of the current folder. How do I make sure it just prints a literal *?
The same, by the way, happens with a regular echo "$foo", it prints the contents of the current folder.
In Bash, when I do:
foo="*" echo $foo It expands * to the contents of the current folder. How do I make sure it just prints a literal *?
The same, by the way, happens with a regular echo "$foo", it prints the contents of the current folder.
Let us define foo:
$ foo="*" Now, try echo without quotes:
$ echo $foo File1 File2 The replacement of * with a list of filenames is called pathname expansion. It can be suppressed with with double-quotes:
$ echo "$foo" * In addition, double-quotes will prevent brace expansion, tilde expansion, and word splitting.
For completeness, try echo with single quotes:
$ echo '$foo' $foo Single quotes prevent the shell from making any substitutions at all.