1. $0
:脚本的名字
-
$0
就是脚本的名称。比如你运行了一个叫test.sh
的脚本,$0
就是test.sh
。
2. $1
、$2
、$3
……:脚本的参数
-
当你运行脚本时,如果后面跟了参数,比如
./test.sh a b c
,那么$1
是a
,$2
是b
,$3
是c
。
3. $#
:参数的数量
-
$#
是脚本接收到的参数个数。比如上面的例子中,$#
就是3
。
4. $*
:所有参数的集合
-
$*
是所有参数的值,作为一个整体。比如上面的例子中,$*
就是a b c
。
5. $?
:上一条命令的返回值
-
$?
是上一条命令执行后的结果状态。比如,如果命令成功,$?
是0
;如果失败,$?
是一个非零值。
示例脚本
假设我们有一个脚本 test.sh
,内容如下:
bash
复制
#!/bin/bash
# 打印脚本名称
echo "脚本名称是: $0"
# 打印参数数量
echo "参数数量是: $#"
# 打印第一个参数
echo "第一个参数是: $1"
# 打印第二个参数
echo "第二个参数是: $2"
# 打印所有参数
echo "所有参数是: $*"
运行脚本
运行脚本时,我们传入一些参数:
bash
复制
./test.sh hello world
输出结果
运行后,脚本会输出:
复制
脚本名称是: ./test.sh
参数数量是: 2
第一个参数是: hello
第二个参数是: world
所有参数是: hello world
再看 $?
假设我们运行一个命令并检查它的返回值:
bash
复制
ls /nonexistent_directory
echo "命令的返回值是: $?"
如果目录不存在,ls
会报错,$?
的值可能是 2
(表示失败)。
总结
这些变量是用来处理脚本参数和命令返回值的:
-
$0
是脚本的名字。 -
$1
、$2
是脚本的第1个、第2个参数。 -
$#
是参数的数量。 -
$*
是所有参数的值。 -
$?
是上一条命令的返回值