Bash   发布时间:2022-05-13  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Shell学习之传递参数大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

SHell 传递参数
我们可以在执行 SHell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……
实例
以下实例我们向脚本传递三个参数,并分别输出,其中 $0 为执行的文件名:

#!/bin/bash@H_301_11@
# author:菜鸟教程@H_301_11@
# url:www.runoob.com@H_301_11@

echo@H_301_11@ "SHell 传递参数实例!"@H_301_11@;
echo@H_301_11@ "执行的文件名:$0@H_301_11@"@H_301_11@;
echo@H_301_11@ "第一个参数为:$1@H_301_11@"@H_301_11@;
echo@H_301_11@ "第二个参数为:$2@H_301_11@"@H_301_11@;
echo@H_301_11@ "第三个参数为:$3@H_301_11@"@H_301_11@;

为脚本设置可执行权限,并执行脚本,输出结果如下所示:

$ chmod +x@H_301_11@ test.sh@H_301_11@ 
$ ./test.sh@H_301_11@ 1@H_301_11@ 2@H_301_11@ 3@H_301_11@
SHell 传递参数实例!
执行的文件名:./test.sh@H_301_11@
第一个参数为:1@H_301_11@
第二个参数为:2@H_301_11@
第三个参数为:3@H_301_11@

另外,还有几个特殊字符用来处理参数:

参数处理 说明
$# 传递到脚本的参数个数
$* 以一个单字符串显示所有向脚本传递的参数。 如”$*“用「”」括起来的情况、以”$1 $2$n“的形式输出所有参数。
$$ 脚本运行的当前进程ID号
$! 后台运行的最后一个进程的ID号
$@ $*相同,但是使用时加引号,并在引号中返回每个参数。如”$@“用「”」括起来的情况、以”$1” “$2” … “$n” 的形式输出所有参数
$- 显示SHell使用的当前选项,与set命令功能相同
$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误
#!/bin/bash@H_301_11@
# author:菜鸟教程@H_301_11@
# url:www.runoob.com@H_301_11@

echo@H_301_11@ "SHell 传递参数实例!"@H_301_11@;
echo@H_301_11@ "第一个参数为:$1@H_301_11@"@H_301_11@;

echo@H_301_11@ "参数个数为:$#@H_301_11@"@H_301_11@;
echo@H_301_11@ "传递的参数作为一个字符串显示:$*"@H_301_11@;

执行脚本,输出结果如下所示:

$ @H_301_11@chmod +x test.sh 
$ @H_301_11@./test.sh 1@H_301_11@ 2@H_301_11@ 3@H_301_11@
SHell@H_301_11@ 传递参数实例!
第一个参数为:1@H_301_11@
参数个数为:3@H_301_11@
传递的参数作为一个字符串显示:1@H_301_11@ 2@H_301_11@ 3@H_301_11@

$*$@ 区别:

  • 相同点:都是引用所有参数。
  • 不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 ” * ” 等价于 “1 2 3”(传递了一个参数),而”@” 等价于 “1” “2” “3”(传递了三个参数)。
#!/bin/bash@H_301_11@
# author:菜鸟教程@H_301_11@
# url:www.runoob.com@H_301_11@

echo@H_301_11@ "-- \$* 演示 ---"@H_301_11@
for@H_301_11@ i in@H_301_11@ "$*"@H_301_11@; do@H_301_11@
    echo@H_301_11@ $i@H_301_11@
done@H_301_11@

echo@H_301_11@ "-- \$@ 演示 ---"@H_301_11@
for@H_301_11@ i in@H_301_11@ "$@@H_301_11@"@H_301_11@; do@H_301_11@
    echo@H_301_11@ $i@H_301_11@
done@H_301_11@

执行脚本,输出结果如下所示:

$ chmod +x test.sh 
$ ./test.sh 1 2 3
-- $*@H_301_11@ 演示 --- @H_301_11@1 2 3
-- $@@H_301_11@ 演示 --- @H_301_11@1
2
3

转自:http://www.runoob.com/linux/linux-sHell-passing-arguments.html

大佬总结

以上是大佬教程为你收集整理的Shell学习之传递参数全部内容,希望文章能够帮你解决Shell学习之传递参数所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。