如何在Shell脚本中传递命令行参数
发布时间 - 2019-03-21 00:00:00 点击率:次命令行参数在命令行操作系统(如dos或linux)中的程序名称之后传递,并从操作系统传递到程序中。shell脚本也接受类似于nix命令的命令行参数。命令行参数对于在运行时将输入数据传递给脚本很有用,本文将介绍关于在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教程视频栏目!
# php
# 命令行参数
# 循环
# .net
# number
# linux
# 命令行
# 第二个
# 第一个
# 第三个
# 是由
# 操作系统
# 创建一个
# 还可以
# 依此类推
# 来访问
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
详解Android图表 MPAndroidChart折线图
如何在腾讯云服务器上快速搭建个人网站?
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】
如何在腾讯云服务器快速搭建个人网站?
浅谈redis在项目中的应用
Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】
HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧
Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】
大型企业网站制作流程,做网站需要注册公司吗?
Laravel如何编写单元测试和功能测试?(PHPUnit示例)
Claude怎样写约束型提示词_Claude约束提示词写法【教程】
简单实现jsp分页
详解Android中Activity的四大启动模式实验简述
laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法
Linux系统命令中screen命令详解
如何挑选优质建站一级代理提升网站排名?
Laravel怎么使用Intervention Image库处理图片上传和缩放
如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程
Laravel定时任务怎么设置_Laravel Crontab调度器配置
Laravel怎么上传文件_Laravel图片上传及存储配置
详解jQuery停止动画——stop()方法的使用
昵图网官网入口 昵图网素材平台官方入口
Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载
Laravel如何使用Eloquent进行子查询
PHP正则匹配日期和时间(时间戳转换)的实例代码
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
Laravel怎么调用外部API_Laravel Http Client客户端使用
Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】
如何在IIS管理器中快速创建并配置网站?
php做exe能调用系统命令吗_执行cmd指令实现方式【详解】
如何在IIS中新建站点并解决端口绑定冲突?
Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康
Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置
JavaScript数据类型有哪些_如何准确判断一个变量的类型
IOS倒计时设置UIButton标题title的抖动问题
js实现点击每个li节点,都弹出其文本值及修改
Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤
Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】
Laravel如何实现全文搜索功能?(Scout和Algolia示例)
java中使用zxing批量生成二维码立牌
Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控
Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解
如何在橙子建站中快速调整背景颜色?
Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制


$*"