1 特殊变量 $n
$n,n为数字,n为0-9,$0 代表脚本名称,$1- 9 代 表 第 一 到 第 九 个 参 数 , 9 以 上 的 参 数 需 要 使 用 大 括 号 , 如 9代表第一到第九个参数,9以上的参数需要使用大括号,如 9代表第一到第九个参数,9以上的参数需要使用大括号,如{10}表示第10个参数,比如如下,创建test.sh脚本文件,脚本如下,即打印脚本名本身,以及第一个、第二个和第三个参数
#!/bin/bash
echo $0
echo $1
echo $2
echo $3
用如下的方式执行,可以看出符合我们的预期
$ bash test.sh hahah 2 100
test.sh
hahah
2
100
$
2 特殊变量 $#
$# 为获取所有输入参数的个数,如下,在test.sh脚本文件中写入如下内容,即打印参数的个数
#!/bin/bash
echo $#
使用如下命令执行,可以看出,当不输入参数时,打印的是0,当输入三个参数时则打印3
$ bash test.sh
0
$ bash test.sh 111 222 333
3
$
3 特殊变量$*
∗ 作 用 是 偶 去 命 令 行 中 所 有 的 参 数 , * 作用是偶去命令行中所有的参数, ∗作用是偶去命令行中所有的参数,* 把所有的参数看成一个整体,如下test.sh代码即为打印$*的内容
#!/bin/bash
echo $*
执行结果如下,可以看出将执行时输入的三个参数都打印出来了
$ bash test.sh 111 222 333
111 222 333
$
4 特殊变量$@
@ 作 用 是 这 个 变 量 代 表 命 令 行 中 所 有 的 参 数 , 不 过 @ 作用是这个变量代表命令行中所有的参数,不过 @作用是这个变量代表命令行中所有的参数,不过@把每个参数区分对待,如下,在test.sh中编写代码,打印$@
#!/bin/bash
echo $@
执行结果如下,可以看出此时同样将三个参数都打印出来了
$ bash test.sh 111 222 333
111 222 333
$
5 特殊变量$?
$? 作用是获取最后一次执行的命令的返回状态,如果这个变量的值为0,表示上一个命令执行成功,如果这个变量不是0,则证明上个命令执行错误了
如下,当执行ls正确后, ? 的 值 为 0 , 而 当 输 入 一 个 错 误 的 命 令 时 , 此 时 ?的值为0,而当输入一个错误的命令时,此时 ?的值为0,而当输入一个错误的命令时,此时?的值是127
$ ls
test.sh
$ echo $?
0
$ lsss
-bash: lsss: command not found
$ echo $?
127
$