如何在Shell脚本命令行中传递参数

一个命令行后可以指定不同参数实现不同功能,在命令行的操作系统中,如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脚本理解命令行参数。对于任何建议,请添加注释。
赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏