位置参数变量
当执行一个shell脚本时,如果要获取命令行的参数信息,可使用到位置参数变量 如 ./myshell.sh 100 200 是一个shell脚本执行命令,可以在myshell中获取到100和200这2个参数
# 基本语法
# $n 接收入参
接收入参,表示脚本入参的占位符
n 为数字
$0 表示该脚本的名称
$1-9 表示第一个到第九个参数
十个以上的参数使用大括号括起来表示 ${10}
应用实例
输出脚本的入参
- 编写paramter.sh 文件,并 chmod 777 paramter.sh
#!/bin/bash
echo $0 $1 $2
1
2
2
- 执行shell文件
- 位置0 表示脚本的名称
- 位置1 表示第一个参数
- 位置2 表示第二个参数
[root@hadoop100 sh-demo]# ./paramter.sh param1 param2
./paramter.sh param1 param2
1
2
2
对脚本进行修改,加深对单引号和双引号的认识
- 修改paramter.sh脚本
#!/bin/bash
echo $0 $1 $2
echo '$0='$0
echo '$1='$1
echo '$2='"$2"
1
2
3
4
5
2
3
4
5
- 执行
# 单引号里面的$输出的就是$字符串,而在双引号中的$则依然表示命令
[root@hadoop100 sh-demo]# ./paramter.sh param1 param2
./paramter.sh param1 param2
$0=./paramter.sh
$1=param1
$2=param2
1
2
3
4
5
6
2
3
4
5
6
# $* 所有参数
表示命令行入参的所有参数,将所有参数看成一个整体,类似于args.toString(),参数之间以空格连接
# $@ 所有参数
表示命令行入参的所有参数,等于输入参数的列表对象,等价于args的引用
应用实例
- 编写 paramter.sh
#!/bin/bash
echo $0 $1 $2
echo '$*='$*
echo '$@='$@
1
2
3
4
2
3
4
- 执行
# $* 和 $@ 打印的效果是一样的
[root@hadoop100 sh-demo]# ./paramter.sh param1 param2
./paramter.sh param1 param2
$*=param1 param2
$@=param1 param2
1
2
3
4
5
2
3
4
5
# $# 入参个数
获取输入参数的个数,等价于args.length 那么$1等价于args[1],通常用于循环
[root@hadoop100 sh-demo]# cat paramter.sh
#!/bin/bash
echo $0 $1 $2
echo $#
[root@hadoop100 sh-demo]# ./paramter.sh param1 param2
./paramter.sh param1 param2
2
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
Last Updated: 2022/03/20, 10:04:55