通常情况下,在工作中用的最多的有如下几项:

1、$#:表示执行脚本传入参数的个数

2、$*:表示执行脚本传入参数的列表(不包括$0)

3、$$:表示进程的id;Shell本身的PID(ProcessID,即脚本运行的当前 进程ID号)

4、$!:Shell最后运行的后台Process的PID(后台运行的最后一个进程的 进程ID号)

5、$@:表示获取执行脚本传入的所有参数

6、$0:表示执行的脚本名称

7、$1:表示第一个参数

8、$2:表示第二个参数

9、$?:表示脚本执行的状态,0表示正常,其他表示错误

在Shell脚本中,我们经常会看到$0、$1、$2、$3等,看着像是参数,但又不太像,这些究竟表示啥呢?其实非常简单:

$0:你写的shell脚本本身的名字
$1:给你写的shell脚本传的第一个参数
$2:给你写的shell脚本传的第二个参数

#!/bin/sh
echo "shell脚本本身的名字: $0"
echo "传给shell的第一个参数: $1"
echo "传给shell的第二个参数: $2"

假设该脚本名字叫test.sh,那么我们执行bash test.sh a 1,就可以看到结果:
shell脚本本身的名字: test.sh

传给shell的第一个参数: a

传给shell的第二个参数: 1

Linux脚本中$#、$0、1、1、1@、∗、*、、、分别表示什么?

$#:传入脚本的参数个数;
 
$0:  脚本自身的名称;  
 
$1:  传入脚本的第一个参数;
 
$2:  传入脚本的第二个参数;
 
$@: 传入脚本的所有参数;
 
$*:传入脚本的所有参数;
 
$$:  脚本执行的进程id;
 
$?:  上一条命令执行后的状态,结果为0表示执行正常,结果为1表示执行异常;
 
其中$@与$*正常情况下一样,当在脚本中将$*加上双引号作为“$*”引用时,此时将输入的所有参数当做一个整体字符串对待。比如输入参数有a b c三个参数,则“$*”表示“a b c”一个字符串。
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐