您的位置:首页 > 运维架构 > Shell

Linux学习日记 —— 10.4.3 Shell基础-Bash变量-位置参数变量

2018-03-03 02:30 1626 查看
位置参数变量其实属于预定义变量的一种。

位置参数变量主要有以下这些:

位置参数变量说明
$nn为数字。$0代表命令本身,$1到$9代表第1到第9个参数(参数的值是执行该命令时,从1开始依次输入的),十以上的参数要用大括号包含,如${10}。
$*这个变量代表命令行中所有的参数(不包括$0),它把所有的参数当做一个整体对待。对其进行for循环遍历时,只会循环一次。
$@这个变量也代表命令行中所有的参数(不包括$0),它把所有的参数当做独立的个体区别对待。对其进行for循环遍历时,可循环多次。
$#这个变量代表命令行中所有参数的个数(不包括$0)。
位置参数变量的名称和作用都是固定的,但我们可以给其传入不同的值。

位置参数变量的作用是接收用户执行命令时传入的参数以及命令本身。

位置参数变量主要用在shell脚本文件中,那么它的作用就是把命令和命令的参数传递到当前执行的脚本中。

示例1:

#!/bin/bash
num1=$1
num2=$2
Sum=$(( $num1 + $num2))
#变量sum的和是num1加num2
echo $num
#打印变量sum的值


示例2:

#!bin/bash
echo "A total of $# parameters"
#使用$#代表所有参数的个数
echo "The parameters is: $*"
#使用$*代表所有的参数
echo "The parameters is: $@"
#使用$@也代表所有参数


示例3:$*和$@的区别

#!/bin/bash
for i in "$*"
# $*中的所有参数看成是一个整体,所以这for循环只会循环一次
do
echo "The parameters is: $i"
done
x=1
for y in "$@"
# $@中的每个参数都看成是独立的,所以"$@"中有几个参数,就会循环几次
do
echo "The parameters is: $y"
x=$(( $x +1 ))
done


编写一个shell脚本文件canshu.sh,并执行它来说明。

vi canshu.sh


canshu.sh的内容如下:

#!/bin/bash

for i in "$*"
do
echo $i
done
for y in "$@"
do
echo $y
done
echo $#


给该shell脚本赋予执行权限。

chmod 755 canshu.sh


赋予执行权限。

执行该脚本,并传递1234

[root@localhost 12:41 ~/sh]# cat canshu.sh 1234
#输出结果:
1 2 3 4
1
2
3
4
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  shell linux