登录  /  注册
首页 > 运维 > linux运维 > 正文

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

不言
发布: 2019-03-21 14:50:58
原创
7298人浏览过

命令行参数在命令行操作系统(如dos或linux)中的程序名称之后传递,并从操作系统传递到程序中。shell脚本也接受类似于nix命令的命令行参数。命令行参数对于在运行时将输入数据传递给脚本很有用,本文将介绍关于在shell脚本中传递命令行参数。

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

要传递命令行参数,我们只需在用空格分隔的脚本名之后编写它们。所有命令行参数都可以使用$来访问其位置编号。向shell脚本传递命令行参数的示例。

# sh myScript.sh 10 red admin.net
登录后复制

sh:Linux shell

myScript.sh:Linux shell 脚本

10:$1可访问的第一个命令行参数

red:第二个命令行参数,可以通过$2访问

admin.net:$3可访问的第三个命令行参数

访问带位置编号的命令行参数

如上所示,命令行参数可以在$1、$2、$3...$9、$10…$100等处访问。命令行参数的最大长度不是由shell定义的,而是由操作系统定义的,以千字节为单位。

$*:存储所有命令行参数

$@:存储所有命令行参数

$:存储命令行参数的计数

$0:脚本本身的存储名称

$1:存储第一个命令行参数

$2:存储第二个命令行参数

$3:存储第三个命令行参数

$9:存储第9个命令行参数

$10:存储第10个命令行参数

$99:存储第99个命令行参数

例1:

使用脚本名称和传递的参数总数创建一个shell脚本来打印所有参数。创建脚本文件myScript.sh要求以下内容。

#vim myScript.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: "$*"
登录后复制

执行脚本

# sh myScript.sh  10 rahul tecadmin.net

Script Name: myScrit.sh
Total Number of Argument Passed: 3
Arguments List -
1. 10
2. red
3. admin.net
All Arguments are: 10 red admin.net
登录后复制

例2:

通过shell脚本中的所有参数创建循环。为此,请创建一个shell脚本文件myscript2.sh,其中包含以下内容。

# vim myScript2.sh
登录后复制
#!/bin/bash

for i in "$@"
do
  echo Argument: $i
done
登录后复制

执行脚本

# ./myScript2.sh  10 rahul tecadmin.net

Argument: 10
Argument: red
Argument: admin.net
登录后复制

通过移位来访问命令行参数

我们还可以通过改变命令行参数在shell脚本中的位置来访问它们。比如用$1访问第一个命令行参数。现在将参数换成1.意味着第二个参数现在位于第一个位置,相同的第三个位于第二个位置,依此类推。

使用下面的内容创建shell脚本myscript3.sh,并使用参数执行。现在现在观察如何在shell脚本中使用“shift ”命令移动参数。

#!/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@tecadmin ~]# 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
登录后复制

本篇文章到这里就已经全部结束了,更多其他精彩内容可以关注PHP中文网的Linux教程视频栏目!

以上就是如何在Shell脚本中传递命令行参数的详细内容,更多请关注php中文网其它相关文章!

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号