位置:首页 > Shell > Shell命令行位置参数详解与常用示例

Shell命令行位置参数详解与常用示例

时间:2026-08-15  |  作者:318050  |  阅读:0

先把 Shell 里的位置参数捋清楚。

执行 Shell 脚本时,通常可以顺手带上一些参数。这些参数进入脚本后,就能用$n这样的形式来读取。

比如,$1 代表第一个参数,$2 代表第二个参数,后面依次类推。

函数调用也是同样的道理,也可以传参。不过,Shell 函数在这件事上的处理方式,和很多编程语言不太一样。

它没有严格意义上的形参、实参之分。定义函数时,也不需要提前写明参数名和参数个数。

换句话说,Shell 函数定义时本身不带参数。但真正调用函数时,却完全可以把参数传进去。

这些传入的内容,在函数内部依然是通过$n来接收。例如,$1 表示第一个参数,$2 表示第二个参数,依次往后排。

像这种通过$n来获取的参数,在 Shell 里就叫位置参数

前面讲变量命名时提到过,变量名必须以字母或下划线开头,不能直接用数字开头。可位置参数偏偏就是数字形式,这显然不符合普通变量的命名规则。

所以,通常会把它们归到“特殊变量”这一类里。

除了 $n 之外,Shell 里还有 $#、$*、$@、$、$$ 这些特殊参数,下一节会继续展开。

1) 给脚本文件传递位置参数

下面编写代码,并命名为 test.sh:

#!/bin/bash

echo "Language: $1"
echo "URL: $2"

运行 test.sh,并附带参数:

[mozhiyan@localhost ~]$ cd demo
[mozhiyan@localhost demo]$ . ./test.sh Shell http://c.biancheng.net/shell/
Language: Shell
URL: http://c.biancheng.net/shell/

这里的Shell就是第一个位置参数,http://c.biancheng.net/shell/就是第二个位置参数。

多个参数之间用空格隔开。

2) 给函数传递位置参数

下面编写代码,并命名为 test.sh:

#!/bin/bash

#定义函数
function func(){
    echo "Language: $1"
    echo "URL: $2"
}

#调用函数
func C++ http://c.biancheng.net/cplus/

运行 test.sh:

[mozhiyan@localhost ~]$ cd demo
[mozhiyan@localhost demo]$ . ./test.sh
Language: C++
URL: http://c.biancheng.net/cplus/

可以看到,给函数传参时,函数内部同样使用$1$2这样的形式来接收参数。

关于函数定义和调用的具体语法请访问:Shell函数定义和调用、Shell函数参数

注意事项

如果参数很多,达到或者超过 10 个,那么接收时就不能再直接写$n,而要改用${n}这种形式,比如 ${10}、${23}。

这里{ }的作用,是帮助解释器准确判断参数边界。这一点和变量使用时加{ }的效果完全一样。

要点小结

  • $1、$2、$3... 表示第 1 个、第 2 个、第 3 个位置参数。
  • 位置参数既可以传给脚本,也可以传给函数。
  • Shell 函数定义时不写参数名,但调用时可以直接传参。
  • 当参数序号达到或者超过 10 时,应使用${n}形式。

下节展望

在 Shell 里,位置参数不仅可以单独取出某一个具体参数,还可以拿到全部参数列表,以及参数个数等信息。

下一节会把这些内容详细讲清楚。

Shell位置参数(命令行参数)

来源:整理自互联网
免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。

相关文章

更多

精选合集

更多

大家都在玩

热门话题

大家都在看

更多