📅  最后修改于: 2023-12-03 15:22:25.696000             🧑  作者: Mango
在编写 Shell 脚本时,我们可以利用命令行传递参数来实现更加灵活的功能。除了使用 $1
、$2
等变量来获取位置参数外,还可以使用一些特殊的参数来实现不同的功能。
下面是常见的特殊参数:
$0
: 表示当前脚本的文件名。$#
: 表示位置参数的个数。$*
或 $@
: 表示所有位置参数。不同之处在于,$*
将所有参数视为一个整体,而 $@
将每个参数分别处理。$?
: 表示上一个命令的返回值,如果命令执行成功,则返回 0,否则返回非 0 值。$$
: 表示当前脚本的进程号。#!/bin/bash
echo "当前脚本文件名:$0"
执行结果:
当前脚本文件名:test.sh
#!/bin/bash
echo "位置参数个数:$#"
假设执行脚本时传入了 3 个位置参数,执行结果如下:
位置参数个数:3
#!/bin/bash
echo "所有位置参数:$*"
假设执行脚本时传入了三个位置参数,分别为 foo
、bar
和 baz
,执行结果如下:
所有位置参数:foo bar baz
使用 $@
同样可以输出相同的结果,只不过是将每个参数分别处理:
#!/bin/bash
echo "所有位置参数:$@"
执行结果:
所有位置参数:foo bar baz
#!/bin/bash
ls non_existent_file
echo "上一个命令的返回值:$?"
执行结果:
ls: 无法访问'non_existent_file': 没有那个文件或目录
上一个命令的返回值:2
#!/bin/bash
echo "当前脚本进程号:$$"
执行结果:
当前脚本进程号:1830
通过使用特殊参数,我们可以在 Shell 脚本中实现更加灵活的功能。本文介绍了常见的特殊参数,并且给出了使用示例。通过这些例子,我们可以更好地理解 Shell 脚本中特殊参数的使用方法。