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