what does '$?' mean in a shell script?

2019-03-10 13:00发布

I came across a shell script that contains a statement like,

if [ $val -eq $? ]

What does $? mean here?

标签: shell unix
6条回答
The star\"
2楼-- · 2019-03-10 13:27

$# = 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'.

查看更多
贼婆χ
3楼-- · 2019-03-10 13:29

I found that the link is very useful and is the great answer. It includes clearly expression with sample.

enter image description here

查看更多
SAY GOODBYE
4楼-- · 2019-03-10 13:29

This is the value of the exit status of the previous command. This is 0 in case of success.

查看更多
做个烂人
5楼-- · 2019-03-10 13:30
$?

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

查看更多
成全新的幸福
6楼-- · 2019-03-10 13:31

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).

查看更多
beautiful°
7楼-- · 2019-03-10 13:36

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
查看更多
登录 后发表回答