一个命令行后可以指定不同参数实现不同功能,在命令行的操作系统中,如DOS或Linux程序的名称后面增加参数,并从操作系统的程序被传递。 Shell脚本也接受类似nix的命令的命令行参数。命令行参数有其自身的优势,运行时间通过输入参数输入脚本是有用的。本文将帮助你通过命令行参数的shell脚本。 要通过命令行参数,我们可以简单地把它们写程序名后,名称和参数以空格隔开。所有命令行参数,可以通过使用 $ 加位置号码来访问获取。通过命令行参数的shell脚本的例子。
# sh myScript.sh 10 rahul youcl.com
- sh :Linux的shell
- myScript.sh :Linux下的shell脚本
- 10 :第一个命令行参数 $1
- rahul :第二个命令行参数 $2
- youcl.com :第三个命令行参数 $3
访问命令行参数与数位
因此,上述例子的命令行参数为$1,$2,$3 ...访问。 $9 $10 ... $100等,命令行参数的最大长度shell 没有定义,但它是由操作系统定义,以KB为单位。
- $* - 存储所有命令行参数
- $@ - 存储所有命令行参数
- $# - 命令行参数数量
- $0 - 脚本本身的文件名称
- $1 - 存储第一个命令行参数
- $2 - 存储第二个命令行参数
- $3 - 存储第三个命令行参数
- ..
- $9 - 存储第9个命令行参数
- $10 - 存储第10个命令行参数
- ...
- ...
- $99 - 存储第99个命令行参数
例1:
创建一个shell脚本来打印与脚本名称和传递的参数总数的所有参数。创建脚本文件
myScrit.sh,内容如下。
# vim myScrit.sh
#!/bin/bash
echo Script Name: "$0"
echo Total Number of Argument Passed: "$#"
echo Arguments List -
echo 1. $1
echo 2. $2
echo 3. $3
echo All Arguments are: "$*"
执行脚本
[root@youcl.com ~]# sh myScrit.sh 10 rahul youcl.com.net
Script Name: myScrit.sh
Total Number of Argument Passed: 3
Arguments List -
1. 10
2. rahul
3. youcl.com.net
All Arguments are: 10 rahul youcl.com.net
例2:
通过shell脚本的所有参数创建循环。要做到这一点创建一个shell脚本文件
myScript2.sh起诉内容如下。
# vim myScrit2.sh
#!/bin/bash
for i in "$@"
do
echo Argument: $i
done
执行脚本
[root@youcl.com ~]# sh myScrit2.sh 10 rahul youcl.com.net
Argument: 10
Argument: rahul
Argument: youcl.com.net
访问命令行参数通过换位置
我们也可以通过改变shell脚本自己的位置访问所有的命令行参数。像以$1访问第一个命令行参数。现在切换参数到 1,这意味着第二个参数是现在第一的位置,第三个相似性是第二个,等等。 创建使用下面内容的shell脚本
myScript3.sh并参数执行。现在看参数是如何在shell脚本中使用“shift <number>”命令移动。
#!/bin/bash
echo First Argument is: $1
echo " >> Shifting argument position by 1"
shift 1
echo Now first Argument is: $1
echo " >> Now Shifting position with 2"
shift 2
echo Now first Argument is: $1
echo " >> Now shifting position with 4"
shift 4
echo Now first Argument is: $1
执行脚本并密切观察$1的输出脚本。
[root@youcl.com ~]# sh myScrit3.sh a friend in need is a friend indeed
First Argument is: a
>> Shifting argument position by 1
Now first Argument is: friend
>> Now Shifting position with 2
Now first Argument is: need
>> Now shifting position with 4
Now first Argument is: indeed
我希望这将帮助你在shell脚本理解命令行参数。对于任何建议,请添加注释。