在linux及unix的shell中,以$开头的字符串表示的是shell中定义的变量,这些变量可以是系统自动定义的,也可以是用户自己定义的。
比如$PATH表示的是系统的命令搜索路径,和windows的%path%是一样的$HOME则表示是用户的主目录,也就是用户登录后工作目录。
使用${ }的形式来引用变量,进行变量替换成相应值。一般情况下,$var与${var}是没有区别的,但是用${ }会比较精确的界定变量名称的范围。
符号 |
说明 |
$# |
传给脚本的参数个数 |
$0 |
脚本本身的名字 |
$1 |
传递给该shell脚本的第一个参数 |
$2 |
传递给该shell脚本的第二个参数 |
$n |
传递给shell脚本的第n个参数。个位数的,可直接使用数字,但两位数以上,则必须使用 {} 符号来括住,如${10} |
$@ |
传给脚本的所有参数的列表(空格分隔的多个字符串) |
$* |
以一个单字符串显示所有向脚本传递的参数,中间有空格 |
$$ |
脚本运行的当前进程ID号,或当前终端的进程ID |
$? |
显示最后命令的退出状态,0表示没有错误,其他表示有错误。一般来说,UNIX(linux) 系统的进程以执行系统调用exit() 来结束的。这个回传值就是status值。范围为一个字节, |
$! |
Shell最后运行的后台Process的PID(脚本中或命令行中) |
$- |
显示shell使用的当前选项,与set命令功能相同。使用Set命令设定的Flag一览 |
exit函数:
#include <stdlib.h>
void exit(int status);
这个函数会使进程正常终止,返回给父进程一个值,为status & 0xFF。
参考:
1,Linux中一些变量的意义
Linux中变量$#,$@,$0,$1,$2,$*,$$,$?的含义_51CTO博客_shell $1 $2
2,Linux中的$符号的各种用法