I came across a shell script that contains a statement like,
if [ $val -eq $? ]
What does $?
mean here?
ls *.*
or ls
would produce the same result. Meaning show zero or more files with any extension in the current directory.
echo $?
would display the exit status. If at least one file is displayed from the last command ,the exit status would be zero(success).
What does $? mean here?
$? is the last result of an exit-status ... 0 is by default "successfull"
bash# ls *.*
bash# echo $?
bash# 0
bash# ls /tmp/not/existing/
bash# echo $?
bash# 2
This is the value of the exit status of the previous command. This is 0
in case of success.
$#
= number of arguments. Answer is 3
.
$@
= what parameters were passed. Answer is 1 2 3
.
$?
= was last command successful. Answer is 0
which means 'yes'.
$?
returns the status of the last finished command. Status 0 tells you that everything finished ok.
In addition the $
sign is a special symbol - and in that case $val
extract the value that is hold by the variable val
I found that the link is very useful and is the great answer. It includes clearly expression with sample.