上篇主要讲解完反引、双引和单引,其中反引的用法和$()一致,都可以使终端命令的返回值赋给变量
本篇主要讲解位置参数变量、预定义变量。
位置参数变量
介绍:当我们执行一个shell脚本的时候,如果希望获取到终端命令执行该脚本的参数信息,就可以使用位置参数变量,
例:
./mark.sh 20 30 10 ,这个终端命令在执行mark脚本时,传入了20,30,10三个参数进去,如果脚本想使用,就可以使用位置参数变量
用法:
$n : n表示常量,比如你想获取到上面的30,也就是第二个参数,使用$2即可
$* : 代表获取到所有的参数
$@:代表获取到所有的参数
$#: 代表获取到参数的个数
案例:
老规矩,我们还是在/usr/local/shell 目录下,vi position.sh,编辑一个新的脚本,写下
#!/bin/bash
#使用$n获取到位置参数
echo "第一个参数:$1,第二个参数:$2,第三个参数:$3"
echo "所有的参数(*):$*"
echo "所有的参数(@): $@"
echo "参数个数:$#"
保存退出后,我们别忘记给新的脚本授权 ,执行。
我们发现,假如我不给任何参数,执行不会报错,脚本认为参数都是空的给你使用,个数为0
而当我们传入参数后,依次显示成功,不过这里我们发现使用$@和$*的方式一样,那他们有什么区别吗?有区别的,这边我们暂时没到循环,区别咱们先保留,留到后面再进行说明。
预定义变量
介绍:预定义变量就是shell设计者预先已经定义好的变量,我们可以直接在shell脚本中直接使用
常用的有:
$$:当前进程的进程号
$!:后台最后运行的进程号
$?:最后一次执行命令的返回状态,如果是0表示上一个命令正确执行
案例:
我们再来一个文件 vi predefine.sh,编辑内容
#!/bin/bash
./position.sh &
echo "当前进程:$$"
echo "最后运行的进程 $!"
echo "最后成功?$?"
第二行执行我们刚才的位置参数的文件,后面跟的&表示让该命令在后台运行
保存退出后,我们授权执行。
执行成功,我们在这个predefine.sh中的进程号是50975,然后最后执行的(执行了position.sh)进程号是50976
成功后,可以使用ctrl +c结束,回到命令行模式