linux之Shell编程--Shell参数传递实例演示

Posted 菠萝印象威

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux之Shell编程--Shell参数传递实例演示相关的知识,希望对你有一定的参考价值。

一.Shell传递参数的格式

脚本内获取参数的格式为:$n(n为数字),例如:1为执行脚本的第一个参数,2为执行脚本的第二个参数。

二.Shell传递参数实例演示

vim创建canshu.sh后输入以下内容,保存。
在这里插入图片描述

给脚本设置可执行权限后输入 ./canshu.sh 1 2 3 后结果如下
在这里插入图片描述

从结果可知:
$0为执行文件名(包含文件路径)
执行文件名后的1,2,3就是传入的参数

特殊字符处理参数
$#:传递到脚本的参数个数
$$:脚本运行的当前进程ID号
$!:后台运行的最后一个进程的ID号
$?:显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
$*:传递的参数用字符串显示出来(返回的参数为一个字符串)
$@:传递的参数显示出来(返回每个引号的参数)

演示:
在这里插入图片描述
运行结果:
在这里插入图片描述
分析:
从结果看$*和 $@可能并没有什不同,但是实际上 $ *输出的是"1 2 3",而$@输出的结果为"1",“2”,“3”,一个是字符串,一个是三个字符

$@ 和 $*的区别
@表示每一个独立的参数,如"1",“2”,“3”(表示传递了三个参数)。
*表示一个整体,如"1 2 3"(传递了一个参数)
相同点都是传递参数,只是表示的传递参数的个数可能不同。

使用循环输出演示 $*和 $@的不同

在这里插入图片描述
结果:
在这里插入图片描述
可以发现:
循环输出 $*只得到一个参数为"1 2 3"。
循环输出 $@得到三个参数为"1",“2”,“3”。

三.判断参数是否为空

在这里插入图片描述

这一段脚本有很多值得注意的地方
1.注释:单行注释可以使用 #,多行注释使用
: << !
注释的脚本代码
!
或者
: '
注释的代码

或者
if false; then
注释的代码
fi
2.[ -n “$1” ]中的 [] 使用空格隔开,这一段表示第一个参数是否为空"$1"可以改为"$2"或者其他的。
3 if语句要以fi为结束符,类似于endif。

上面的结果演示:
在这里插入图片描述
改为"$2"会怎样呢
在这里插入图片描述

结果:
在这里插入图片描述

知识点:
Shell里的[]与[[]]
1.判断一个变量是否为n, [ $var -eq n ] (n为变量,可以是1,2,3)。
2.文件判断,文件是否存在[ -e $var ], 是否是目录,[ -d $var ]。
3.字符串比较,判断两个字符串是否相同, [[ $var1 = $var2 ]]。

演示:
在这里插入图片描述
在这里插入图片描述
结果:
在这里插入图片描述

Shell参数传递的实例演示就讲到这里,后面还会进一步演示Shell的其他编程的知识。

以上是关于linux之Shell编程--Shell参数传递实例演示的主要内容,如果未能解决你的问题,请参考以下文章

Linux Shell脚本之向脚本传递参数

linux之shell---特殊字符$

大数据之Shell:Shell工具(awk)

Linux Shell编程之特殊变量

shell编程之带参数的函数

Shell编程之特殊变量(详解)