If you’ve used any other language, then you are probably quite familiar with how variables work, and how they are referred to. If not, then the following examples should suffice to cover the two most common options:
PHP (amongst others)
$foo="hello, world"; echo $foo;
This sets the “foo” variable to be “hello, world!”, and then echoes it out. Notice how “foo
” is always preceded by a dollar ($) symbol. That denotes it as a variable. Whether we’re setting or reading its contents, it’s always “$foo
“.
C (and others again)
int main() { int foo; int bar; foo=2; bar = foo * 5; printf("The answer is %d\n", bar); }
This will provide the useful fact that 2*5 = 10. However, no “$
” dollar symbols are used at all. That’s the “other” option… the compiler knows the rules, depending on the chosen language.
However, the shell falls part way in between these two examples.
If you want to quote the value of a variable, then you need the dollar. If you want to set it, then drop the dollar:
Shell Script
#!/bin/sh foo=Hello echo $foo World
This will say “Hello World”. But did you see what happened with the dollars? To set a variable, no dollar. To read it, use the dollar.
This is particularly confusing to many users of the shell. I can’t even provide a good reason as to why it should work this way, whether historically or pragmatically.
Similarly, when reading variable contents, do not use the dollar:
#!/bin/sh echo "What do you want to tell the world?" read msg echo $msg World
This will tell your message to the world… if you say “Hello”, then it will say “Hello World”. If you say “Goodbye Cruel”, then it will say “Goodbye Cruel World”.
Notice the dollars… whilst strange, it is at least consistent. You use the dollar symbol to quote the content of the variable; otherwise, leave it out.
For more in-depth stuff about variables, check out
Thank You..It provided the basic info about “$”