当我们在执行一个shell脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量。
比如:./myshell.sh 1 2 ,这个就是执行shell的命令行,其中“1” 、“2” 就是脚本执行的输入参数,可以在shell脚本中获取到。
基本语法
$n -- 功能描述:n 为数字,$n 代表命令本身,$1-$9代表第一个到第九个参数,十以上的参数需要用大括号把位置值包含(如:${10} )
$* -- 功能描述:这个变量代表命令行中所有的参数(把所有的参数当做一个整体)
$@ -- 功能描述:这个变量也代表命令行中的所有参数(把每个参数区分对待)
$# -- 功能描述:这个变量代表命令行中所有参数的个数
其中,$@与$*正常情况下一样,当在脚本中将$*加上双引号作为“$*”引用时,此时将输入的所有参数当做一个整体字符串对待。
实例1:编写脚本positionPara.sh ,在脚本中获取到命令行的各个参数信息.
#!/bin/bash
#获取到各个参数,($0是脚本本身)
echo "$0 $1 $2"
echo "$*"
echo "$@"
echo "参数个数:$#"
输出:
./positionPara.sh 1 2
1 2 3
1 2 3
参数个数:3
实例2:比如输入参数有a b 两个个参数,则“$*”表示“a b”一个字符串。脚本test.sh内容如下:
#!/bin/bash
echo "输入的参数:$*"
for key in $*
do
echo $key
done
for key in "$*"
do
echo $key
done
echo "输入的参数:$@"
for key in $@
do
echo $key
done
for key in "$@"
do
echo $key
done
执行脚本./test.sh a b ,输出:
输入的参数:a b
a
b
a b
输入的参数:a b
a
b
a
b