|NO.Z.00048|——————————|LinuxShell|——|Linux&Shell$变量.V05|——|位置参数变量|
一、位置参数变量
| 作用 | |
| $n | n为数字,$0代表命令本身, $1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,如${10} | 
| $* | 这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体 | 
| $@ | 这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待 | 
| $# | 这个变量代表命令行中所有参数的个数 | 
### --- 创建位置参数变量脚本
[root@localhost sh]# vi count.sh
!/bin/bash
Author: shenchao (E-mail: shenchao@atguigu.com)
num1=$1
# 给 num1 变量赋值是第一个参数
num2=$2
# 给 num2 变量赋值是第二个参数
sum=$(( $num1 + $num2))
# 变量 sum 的和是 num1 加 num2
# Shell 当中的运算还是不太一样的,我们 Shell 运算符小节中详细介绍
echo $sum
# 打印变量 sum 的值### --- 位置参数变量脚本说明
~~~     那么还有几个位置参数变量是干嘛的呢?我们在写个脚本来说明下:
[root@localhost sh]# vi parameter.sh
!/bin/bash
Author: shenchao (E-mail: shenchao@atguigu.com)
echo "A total of $# parameters"
# 使用$#代表所有参数的个数
echo "The parameters is: $*"
# 使用$*代表所有的参数
echo "The parameters is: $@"
# 使用$@也代表所有参数三、对待接收到的所有参数区分说明
### --- 对待接收到的所有参数区分说明
~~~     那么“$*”和“$@”有区别吗?还是有区别的,$*会把接收的所有参数当成一个整体对待,
~~~     而$@则会区分对待接收到的所有参数。还是举个例子:
[root@localhost sh]# vi parameter2.sh
!/bin/bash
 Author: shenchao (E-mail: shenchao@atguigu.com)
for i in "$*"
# 定义 for 循环,in 后面有几个值,for 会循环多少次,
# 注意“$*”要用双引号括起来每次循环会把 in 后面的值赋予变量 i 
# Shell 把$*中的所有参数看成是一个整体,所以这个 for 循环只会循环一次
do
echo "The parameters is: $i"
# 打印变量$i 的值
done
x=1
# 定义变量 x 的值为 1
for y in "$@"
# 同样 in 后面的有几个值,for 循环几次,
# 每次都把值赋予变量 y可是 Shell 中把“$@”中的每个参数都看成是独立的,
# 所以“$@”中有几个参数,就会循环几次
do
echo "The parameter$x is: $y"
# 输出变量 y 的值
x=$(( $x +1 ))
# 然变量 x 每次循环都加 1,为了输出时看的更清楚
doneWalter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor
 
                    
                     
                    
                 
                    
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号 
