What is the meaning the $ special character?

 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers What is the meaning the $ special character?
# 1  
Old 11-02-2017
What is the meaning the $ special character?

Hello... and thank you in advanced for any help anyone can offer me

I'm hoping someone can explain what the leading $ is/means (i.e. $PS1, $HOME, etc).... I was having a discussion with someone and was trying to explain it... Which I felt like I came up kind of short with how well I did it.

I understand it's a special character and how to use it if I want to see the value of a variable or if I want to see the status of a command... I'm just unsure what kind of special character its categorized as or the definition of it's exact function.

I got home and googled it... I found plenty of explanations on how to use it but didn't find an adequate explanation of what it is and it's definition. It seems like every special character is well documented except the $... Could someone explain to me how it's categorized and it's extract definition?

Once again... thanks for reading this and any help anyone can offer
# 2  
Old 11-02-2017
Hi see here: The Open Group Base Specifications Issue 7, 2016 Edition

Quote:
In the shell command language, an entity that stores values. There are three types of parameters: variables (named parameters), positional parameters, and special parameters. Parameter expansion is accomplished by introducing a parameter with the '$' character.
Note:
See also XCU Parameters and Variables.

--
"Parameter expansion" is the way to get the value that is stored in a parameter ( for example a variable )

So for example if you have a variable foo and you give it the value bar
Code:
foo=bar

, then the variable foo contains the value bar.
Then, to get the content of the variable foo, you prepend a $ sign:
Code:
echo "$foo"
bar


Last edited by Scrutinizer; 11-02-2017 at 01:28 PM..
# 3  
Old 11-03-2017
Bodisha,

The best way I like to remember it is that it is a marker to show a variable.

for instance this is my PS1
Code:
HOST=`hostname`
PS1='$LOGNAME@$HOST: $PWD>

PS1 = (the following)
$LOGNAME is the variable LOGNAME that holds my login name
$HOST is the variable that holds the hostname of the server
$PWD is the variable that holds the current (print) working directory
so if I want to echo this PS1 out to see what it looks like I would use:
Code:
dk@server: /home/dk> echo $PS1
$LOGNAME@$HOST: $PWD>
dk@server: /home/dk>

hope this helps
# 4  
Old 11-03-2017
Also note that there are some special variables which are also introduced by "$":

$$ = process number of the currently running process
$* = all the arguments passed to a process (or subfunction of a script)
$@ = same as above*)
$# = number of all the arguments passed to a process (or subfunction of a script)
$! = process number of the background process invoked by the current process
$? = the return code of the last process executed
$1 ($2, $3, ...) = the first (second, third, ...) positional parameter passed to that process

I hope this helps.

bakunin
____________
*) "$*" and "$@" are basically the same, except when quoted. "$*" gives all arguments surrounded by spaces, "$@" gives all arguments surrounded by quotes. For instance, you call a script this way:

Code:
myscript.sh "one arg" "two arg" "three arg"

Inside the script you use "$*" and you get a single string: "one arg two arg three arg", whereas when you use "$@" you get three strings: "one arg" "two arg" "three arg".
This User Gave Thanks to bakunin For This Post:
# 5  
Old 11-03-2017
$() Command substitution, similar to `` (two back quotes) but without some of the same problems.
e.g.
Code:
now=$(date)

Same page that Scrutinizer shared in post #2 but a bit afterward
# 6  
Old 11-04-2017
Hi.

Extensive use in software. See Dollar sign - Wikipedia

Also in development situations, build utility make is often used, and some variables of interest there are:
Code:
Automatic Variables that make will set after a rule match:

   $@  Filename representing the target
   $%  Filename element of archive member specification
   $<  Filename of the first prerequisite
   $?  Names of all prerequisites newer than target, space separated
   $^  Names of all prerequisites, duplicates removed, spaced
   $+  Same as $^, but with duplicates removed, spaced
   $*  Stem of the target - typically file without suffix

   from: GNU make, 3rd, O'Reilly, pages 16-17

As is often the case, fact-based questions are often best answered by searching, Google and Wikipedia are your friends.

Best wishes ... cheers, drl

Last edited by drl; 11-04-2017 at 10:16 PM.. Reason: Add make variables.
# 7  
Old 11-05-2017
Quote:
Originally Posted by drl
Hi.

Extensive use in software. See Dollar sign - Wikipedia

[...]
As is often the case, fact-based questions are often best answered by searching, Google and Wikipedia are your friends.

Best wishes ... cheers, drl

Quote:
Originally Posted by bodisha
[...]
I got home and googled it... I found plenty of explanations on how to use it but didn't find an adequate explanation of what it is and it's definition. It seems like every special character is well documented except the $... Could someone explain to me how it's categorized and it's extract definition?

Once again... thanks for reading this and any help anyone can offer
These 2 Users Gave Thanks to Aia For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Special character $$

Hi, on ksh What does the following do? grep -v "toolbox" $home_oracle/.profile >$home_oracle/.profile.$$ Thanks. Please use CODE tags as required by forum rules! (3 Replies)
Discussion started by: big123456
3 Replies

2. Shell Programming and Scripting

Grep -F for special character

a='CASH$$A' /usr/xpg4/bin/grep -F "$a" *.txt It is not able to grep CASH$$A string as it contains special character $$. I also tried with /usr/xpg4/bin/grep -F '$a' *.txt but still not working. I have to assign CASH$$A to a variable and serach that variable..i dont want to search the... (8 Replies)
Discussion started by: millan
8 Replies

3. Shell Programming and Scripting

Vi special character

When editing a file, vi displays a special character as ^L. Can you tell me the escaped character to be used in awk? And can that escaped character be used in a regexp in both sed and awk? (7 Replies)
Discussion started by: dmesserly
7 Replies

4. Solaris

What is the meaning of the character x in /etc/shadow file?

what is the meaning of the character x in /etc/shadow file which is lying in the encrypted password column.. i need this urgently (4 Replies)
Discussion started by: DJ2176
4 Replies

5. Shell Programming and Scripting

Deleteing one character after an special character

I have below line in a unix file, I want to delete one character after "". 20091020.Non-Agency CMO Daily Trade Recap ~V Hybrids The result should be : 20091020.Non-Agency CMO Daily Trade Recap Hybrids i dont want to use "~V" anywhere in the sed command or any other command, just remove... (1 Reply)
Discussion started by: mohsin.quazi
1 Replies

6. Shell Programming and Scripting

Special character \

Hi, In the shell script, i need to remove the special charater "\" with "\\". For example, i need to replace "D:\FXT\ABC.TXT" with "D:\\FXT\\ABC.TXT". However, when trying to do something like , i get the below error :- -->echo "D:\FXT\ABC.TXT" | sed -e 's#\#\\#g' sed: 0602-404 Function... (7 Replies)
Discussion started by: amit_arora
7 Replies

7. Shell Programming and Scripting

Special character in Diff

Hi I am comparing 2 files (using diff command) with numerical data in them. In the output file I want only the differences which are in file2 but not in file1. Although I am getting the diffences i am also getting special characters in the output file which i do not want. Can somebody help me For... (3 Replies)
Discussion started by: ashu_r2001
3 Replies

8. Shell Programming and Scripting

special character

Hi, I am trying to unload file from a database. Which contains few lines with the character below. Rest of the data was unloaded appropriately. a) What does this below character means? b) How can i remove it, I already have sed '/^$/d' c) Will this effect the file by any means... (4 Replies)
Discussion started by: tostay2003
4 Replies

9. UNIX for Dummies Questions & Answers

Special meaning characters in dir names

Hello, I've had a daemon go a little bit mental and create directories using somments from a config file. The end result is I've ended up with directories with names such as #, 5625), (5725 etc etc etc... However, when I try and delete them I get syntax errors, ( not expected, rmdir #... (2 Replies)
Discussion started by: JWilliams
2 Replies

10. Programming

special character ?

hey there im a bit stuck on executing commands that include the special character '?'. can someone recommend a way on how i would be able to execute it?? i thought the glob function could be useful (still mite be) but upon entering the command 'ls pars?' it listed all the files in the... (1 Reply)
Discussion started by: mile1982
1 Replies
Login or Register to Ask a Question

Featured Tech Videos