作用

往shell脚本里面传递参数

位置参数变量 作用
$n

n 为数字,$0 代表命令本身,$1-$9 代表第一到第九个参数,十以上的参数需要用大括号包含,如 ${10}

$*

这个变量代表命令行中所有的参数,$* 把所有的参数看成一个整体

$@

这个变量也代表命令行中所有的参数,不过 $@ 把每个参数区分对待

$#

这个变量代表命令行中所有参数的个数

例子1

#!/bin/bash
num1=$1
num2=$2
sum=$(($num1+num2))
echo $sum

备注:因为Linux参数都是字符型,所有两个参数相加得加$((参数1+参数2))

Shell变量(4)- 位置参数变量_Shell

Shell变量(4)- 位置参数变量_shell脚本_02

例子2

#!/bin/bash
echo "\$* 输入的参数是:$*"
echo "\$@ 输入的参数是:$@"
echo "\$# 总共输入的参数:$#"

Shell变量(4)- 位置参数变量_命令行_03

Shell变量(4)- 位置参数变量_命令行_04

例子3-1

作用:$* 与 $@ 的区别,$* 与 $@放在双引号“”

代码:

#!/bin/bash
for i in "$*"
do
echo "\$* 参数是:$*"
done

for i in "$@"
do
echo "\$@ 参数是:$@"
done

Shell变量(4)- 位置参数变量_shell脚本_05

 Shell变量(4)- 位置参数变量_命令行_06

例子3-2

作用:$* 与 $@ 的区别,$* 与 $@不放在双引号“”

代码:

#!/bin/bash
for i in $*
do
echo "\$* 参数是:$*"
done

for i in $@
do
echo "\$@ 参数是:$@"
done

Shell变量(4)- 位置参数变量_shell脚本_07

 

 Shell变量(4)- 位置参数变量_Shell_08

 

 总结:发现$* 与 $@在shell脚本中,不用双引号和加双引号时候区别的,实际工作中运用要注意!!!