这个@
不是$@
中的@
,而是在命令开头的@
,如@echo 'hello'
忘说了,这个bash是一个makefile,所以这个@貌似是makefile专有的,表示不显示该改行命令(默认会打出执行的命令)。
下面这是一个完整的关于linux中各种符号的说明:
$0 #当前执行的shell script文件名(带完整路径)
$1 ~ $n #依次存放shell script的命令行参数,数值大于9时必须要用{}括起来,比如${10}。命令行参数可以通过shift命令进行位移操作,位置参数根据shift命令指定的数值往前移动,如不指定移动值,则移动1次。例如:
$* #将所有命令行参数做为一个字符串存入此变量。
$@ #将所有命令行参数做为一个字符串数组,每个参数为一个成员变量,存入此变量。
$# #命令行参数的个数。
$? #上一条命令执行后的返回码。
$ #当前执行的shell script进程编号。
$! #上一个后台程序的进程编号。
$_ #script执行时,存放bash的绝对路径;bash交互时,存放上一个命令最后一个命令行参数;邮件检测时,存放邮件文件名