shell 脚本中关于用户输入参数的处理

Shell——函数参数传递 上述 getopts 后面的 “s:k:y:” 是用户可以给函数提供的选项参数,每个参数还都可以含有参数,因为他们后面都加了 “:”,这个参数会被存到 系统变量 $OPTARG 中。getopts 是 bash 内置的一个命令,通过该命令,用户可以获取函数的选项以及参数值,或者是脚本的命令行选项以及参数值。可以发现,上述的变量 var 的值 是另一个变量(name)的变量名,,此时 可以通过两种方法来引用第二个变量。用户可以通过 系统变量 $# 来获取脚本的参数的个数,当然,函数也是。 阅读详情

1、命令行参数

向shell脚本传递数据的最基本方式是使用命令行参数。
(1) 读取参数
   读取输入的参数的变量为位置参数,位置参数通过标准数字表示,
   其中$0为程序名称,$1为第一个参数,$2为第二个参数,依次类推,直到$9为第九个参数。
   shell脚本自动将命令行参数赋值给各个位置变量。
   同时输入多个参数(可以是数值也可以是字符串)时,必须使用空 格分隔(要想在参数值中包含空格,就必须使用单引号或双引号)
   当参数多于9个后,必须在shell脚本内使用大括号将变量括起来,如${10}。从而可以使用任意个参数。
(2)读取程序名称
传递给变量$0的字符串实际上是程序的路径(根据调用方法决定是相对还是绝对路径)。
使用basename命令可以去掉路径前缀,只获得程序名称(名字中不 可以有空格)。
(3)测试脚本
当脚本认为应该包含参数,却实际上没有数据时,就会出错。
好的方法是 对参数进行检查来保证使用参数前确实存在数据,可以使用-n参数来检查。
ex: if [ –n “$1” ] then .. else .. fi
 

2、特殊的参数变量

用于跟踪命令行参数
(1)参数计数
使用特殊变量$#测试执行脚本时包含的命令行参 数个数。脚本中任何位置都可以使用$#
ex: if [ $# –ne 2 ] 即可测试参数个数
可 以使用${!#}来返回最后一个命令行参数(当无参数时,$#为0, 而${!#}为程序名)
(2)获取所有数据
变量$*将命令行中提供的所有参数作为一个单词处理,它将多个参数看成 一个参数。
变量$@将命令行中提供的所 有参数作为同一个字符串中的多个单词处理。允许对其中的值进行迭代(一般使用for),分隔开不同参数
 

3、 移位

shift命 令能够改变命令行参数的相对位置。默认将每个参数变量左移一个位置(变量$0不变,把$1丢弃,注意 不可以恢复了!)
在不清楚参数数目情况下,这是一个迭代参数的好办法。
可 以为shift提供一个参数,来实现多位移变化。
 

4、处理选项

选项是由破折号 引导的单个字母,用于更改命令的行为。
(1)找出选项
1)处理简单选项
可以使用处理命令行参数相同的方法处理选项,抽取时使用case 语句进行判断是否符合选项格式。
2)从参数中分离选项
同 时使用选项和参数时,可以使用--指示选项列表的结束。发现--后,shell就知道后面的是普通参数了,停止使用case处理选项。
3) 处理带值的选项
选项后紧跟参数值,一种方法是在case中对应选项后使用shift和读后一位参数的 方法处理。更好的方法如下:
(2)使用getopt命 令
getopt命令在处理选项和参数时 非常方便。它对参数进行重新组织,以便于解析
1)命令格式
getopt可以接受任意 形式的选项和参数列表,并自动将它们转换为适当的格式。
命令格式为: getopt options optstring parameters
选项字符串(opstring)用于定义命令行 中的有效选项字母,以及哪些选项字母需要参数值。
2)脚本中使用getopt
需要使用set命令将现有的 命令行选项和参数替换为getopt命令生成的格式化形式。
需要将原始脚本命令行参数送给getopt命令,然后将 getopt命令输出送给set命令,如下:set – `getopts –q ab:cd “$@”`
但 是getopt命令不能很好的处理带有空格的参数值,它将空格解析为参数分隔符,而不是将双引号引起来的两个值合并成一个参数。解决办 法如下:
(3)更高级的getopts命令
getopts命令顺序的对现有的shell参数变量进行处理, 每调用一次,只处理命令中检测到的参数中的一个。处理完所有参数后,以大于0的退出状态退出。
非常适宜于在循环中解析所 有命令行参数
格式为: getopts optstring variable
$OPTARG包含需 要参数值的选项要使用的值,$OPTIND包含getopts停止处理时在参数列表中的位置。
注意:当getopts处 理时,会将选项前的-去掉,所以对应的case中不需要破折号。
好的特性:
1)可以在参数值中包含空 格
2)选项字母和参数值中间可以没有空格
3)将在命令行中找到的未定义的选项都绑定为单一的输出——问号
 

5、标准化选项

有一些字母选项具有标准含义。最好按照标准含义定义选项意义
-a –c –d –e –f –h –i –l –n –o –q –r –s –v- x –y
 

6、获取用户输入

当需要在执 行过程中获得执行脚本人员的输入,使用read命 令
(1)基本读取
read命 令接受标准输入或其他文件描述符输入。读入后将数据放入一个标准变量中。
-p 允许在read命令行中直接指定一个提示。
可以指定多个变量,也可以不指定(将放置在REPLY环境变量中)
(2)计 时
使用-t指定一个计时器,计时数满还未输入,read返回一个非0的退出状态。
使 用-n指定输入的字符个数,输入达到预定数目时,就自动结束输入
(3)默读
使用 -s使输入不显示在终端(例如输入密码)
(4)读取文件
最常用的方法是使用cat命令,并通过管 道传给包含read的while语句。
ex: cat test | while read line
Shell脚本中参数传递方法详解 本文介绍了Shell脚本中常见的参数传递方法,包括位置参数传递、命名参数传递(使用getopt命令和getopts命令)以及环境变量传递。这些参数传递方法使得Shell脚本能够根据外部提供的参数执行相应的操作,增强了脚本的灵活性和可重用性。通过参数传递,我们可以在执行Shell脚本时向脚本传递一些数据或选项,以便脚本能够根据这些参数执行相应的操作。本文将介绍Shell脚本中常见的参数传递方法,并提供相应的示例代码。下面分别介绍这两种方法。在脚本中,可以使用特殊变量来获取环境变量的值,例如$VAR。 阅读详情

相关推荐

Shell传参的几种方式实现

在我们进行Shell进行传参的时候,我们用得最多的是下面的方式: (1)通用传参方式: 参数处理 说明 $# 传递到脚本的参数个数 $* 以一个单字符串显示所有向脚本传递的参数。 如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。 $$ 脚本运行的当前进程ID号 $! 后台运行的最后一个进程的ID号 $@ 与$*相同,但是使用时加引号,并在引号中返回每个参数。 如"$@"用「"」括起来的情况、以"$1" "$

叱咤少帅的博客 3356

Shell脚本传递参数的4种方式(位置参数、特殊变量、环境变量和命名参数)实例说明

Shell脚本传递参数的4种方式(位置参数、特殊变量、环境变量和命名参数)实例说明

ken2232的博客 3万+

25、Shell脚本编程:循环、参数传递与用户输入处理

本文详细介绍了Shell脚本编程中的循环结构、参数传递方法以及用户输入处理技巧。通过实际案例,如查找可执行文件、批量创建用户账户等,展示了如何高效利用循环和参数处理完成系统管理任务。此外,还探讨了脚本编写中的最佳实践,帮助开发者编写更健壮、易维护的脚本程序。

aa123的博客 56

shell 传递参数

Linux shell 传递参数

mixboot 2788

Python实战:3种高效方法将txt转csv(附pandas对比测试)

本文针对Python中将txt文件转换为csv格式的需求,深度评测了open()、csv模块和pandas三种主流方法。通过详尽的性能对比测试,从执行效率、内存占用和适用场景等维度提供选型指南,帮助开发者根据数据规模与复杂度选择最高效的转换方案。

weixin_29073241的博客 263

微信小程序消息推送实战:从模板消息到订阅消息的进阶指南

本文详细解析了微信小程序消息推送的核心机制,重点对比了模板消息与订阅消息的差异与应用场景。模板消息适用于支付成功等强即时性业务回执,而订阅消息则需用户授权,更适合物流提醒等可预期通知。文章提供了从授权、配置到发送的完整实战指南,并分享了常见的避坑技巧与性能优化建议,帮助开发者构建高效、合规的用户触达体系。

weixin_29231027的博客 594

Linux shell 脚本处理用户输入(命令行选项参数、用户输入)

简述了在bash shell 脚本中,如何使用命令行参数,如何设定命令选项及参数。从文件中读取的方法。

weixin_43276033的博客 3万+

VM虚拟机下,通过无线,有线两种方式连接PLC的设置方法

1,VMware软件:编辑>虚拟网络编辑器。 2.右下角:更改设置(如果可以选中“添加网络”选项,则可考虑略过此步) 3.选中VMnet0,点击桥接模式,选中你的物理机有线网卡。点击确定。 4.点击添加网络,我的添加完是VMnet2,然后选中,像上一步样,点击桥接模式,在下拉菜单中选中笔记本的【无线网卡】,然后点击确定。 5.VMware软件:虚拟机>设置。 6.点击 添加>网络...

weixin_46441715的博客 2万+

linux脚本外输入参数,shell 脚本中关于用户输入参数的处理

1、命令行参数向shell脚本传递数据的最基本方式是使用命令行参数。(1) 读取参数读取输入的参数的变量为位置参数,位置参数通过标准数字表示,其中$0为程序名称,$1为第一个参数,$2为第二个参数,依次类推,直到$9为第九个参数。shell脚本自动将命令行参数赋值给各个位置变量。同时输入多个参数(可以是数值也可以是字符串)时,必须使用空 格分隔(要想在参数值中包含空格,就必须使用单引号或双引号)当...

weixin_39523625的博客 1164

[HQChart教程] 去掉“仅学习使用”文字提示的小技巧

最近用 HQChart 做图表时,发现左下角有“仅学习使用”的字样。这种水印虽然是默认的,但如果要展示给客户,可能会显得不够专业。还好,这个问题很好解决,只需要简单修改一下配置。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 598

SAP会计凭证导入ABAP开发模板+注意点—附带源码

开发并不仅仅只要考虑实现的功能,只实现功能的是程序,考虑到使用场景的是工程。使用bapi校验创建会计凭证的数据,报错和参数和正式创建一致。用途,防止产生错误的凭证,即使财务凭证可以冲销。正式创建会计凭证。隐藏的坑。

小九啥也不会 1232

shell脚本中用getopts处理用户输入选项和参数

shell脚本中用getopts处理用户输入选项和参数,举例说明使用方法:   while getopts :a:b:cdefg opt; do     case $opts in         a) do sth;;         cde) do another;;         ?)exit;;     esac done   几个重要变量:     OPT

halazi100 3118

我用 Python 把 Claude 变成了 “代码审查员“:每次提交前 AI 先 Review,Bug 漏网率降了 80%

这是成败的关键。我们需要给 Claude 立规矩,让它像一个严格的架构师那样思考。你是一名资深的首席软件架构师和安全专家。请审查以下 Git Diff 代码变更。你的任务是:1. **安全性检查**:寻找 SQL 注入、XSS、硬编码密钥、敏感信息泄露等。2. **潜在 Bug**:空指针、资源未关闭、竞态条件、逻辑死循环。3. **代码质量**:命名规范、冗余代码、可读性差、缺乏注释。4. **性能优化**:不必要的数据库查询、低效算法。

BUG猿的博客 144

Shell编程中的用户输入处理(3):在shell脚本中,处理命令行参数

3. 在shell脚本中,处理命令行参数 3.1 检查输入参数 使用条件判断,检查输入参数个数 # !/bin/bash # 指定shell类型 if [ $# -lt 2 ] # $#获取输入个数,选项-lt表示less than then echo "please input at least 2 param" fi 默

yjk13703623757的博客 9703

信息安全管理与评估赛题解析-单机取证(含环境)

链接:https://pan.baidu.com/s/1OMzIq884dW2vAiUp0k2Ppg。链接:https://pan.baidu.com/s/1i5daMqhD53wYeQ6hYzRK6Q。链接:https://pan.baidu.com/s/1QFAjdQZK4sJ-gGRP42XPKA。链接:https://pan.baidu.com/s/1BSXvqN2ZGCQXewgFULoeyQ。链接:https://pan.baidu.com/s/1g9zu5ngBz_KMjW1eBMkJAw。

Brucye 1834

Python爬虫抓取淘宝商品详情页信息:从入门到高级技术应用

通过本篇博客,我们了解了如何使用Python爬虫抓取淘宝商品详情页的信息,如何使用requests和Selenium抓取静态和动态内容,如何应对淘宝的反爬虫机制,如何将抓取的数据保存到CSV文件等。随着爬虫技术的不断发展,开发者可以根据需要选择合适的工具和技术,如使用分布式爬虫框架提高抓取效率,或者利用OCR技术处理验证码等问题。在进行淘宝爬虫时,需要注意遵循相关法律法规和平台的爬虫政策,避免对平台造成过度的负担或侵犯其合法权益。

2201_76125261的博客 462

【shell实战之】处理用户输入_传递参数_读取脚本名

【代码】【shell实战之】处理用户输入_传递参数_读取脚本名。

m0_61126667的博客 357

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

linux shell 安装命令行参数,Shell编程中的用户输入处理(3):在shell脚本中,处理命令行参数...

3. 在shell脚本中,处理命令行参数3.1 检查输入参数使用条件判断,检查输入参数个数# !/bin/bash # 指定shell类型if [ $# -lt 2 ] # $#获取输入个数,选项-lt表示less thanthenecho "please input at least 2 param"fi默认情况下,用户的输入是不可靠的,我们需要对用户输入进行检查,除此之...

weixin_35725410的博客 276

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

linux脚本用户输入,Linux shell脚本读取用户输入的参数

Linux&shell之处理用户输入写在前面:案例.常用.归类.解释说明.(By Jim) 命令行参数$1为第一个参数,$2为第二个参数,依次类推...示例: #!/bin/bash # using one command line p ...Shell 脚本处理用户输入传递参数 跟踪参数 移动变量 处理选项 将选项标准化 获得用户的输入 bash shell提供...

weixin_42101056的博客 828

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

7.4 shell处理用户输入

1.命令行参数 命令行参数允许在运行脚本时向命令行添加数据。 1.1 读取参数 Bash shell会将一些称为位置参数的特殊变量分配给输入到命令行中的所有参数。 这也包括shell所执行的脚本名称。位置参数变量是标准的数字: $0:程序名(脚本名); $1:第一个参数; $2:第二个参数; 依次类推,直到$9,第9个参数; 可以在shell脚本中像使用其他变量一样使用$1变量,shell脚本会自动将命令行参数的值分配给变量,不需要作任何处理。 如果需要输入更多的命令行参数,则每个

QiuSaMa的博客 286

Linux 命令行与 shell 脚本编程大全 14 处理用户输入

介绍 shell 脚本如何接收用户的输入 更多精彩 更多技术博客,请移步 IT人才终生实训与职业进阶平台 - 实训在线 导览 运行脚本时可以往脚本中传入命令行参数,例如 ./param.sh 1 2 3 shift 命令可以从右向左移动传入的参数位置,类似于迭代器,shift n 命令可以指定参数移动的位置数,默认为 1 $# 可以在脚本中直接获取传入的参数总数,${!#} 可以在脚本中...

asing1elife's blog 1313

linux 脚本 输入命令行参数,Shell编程中的用户输入处理(2):处理命令行参数(选项、参数)...

2. 命令行参数(选项、参数)2.1 读取命令行参数读取参数时,注意以下几点:用空格分割各个参数位置参数$position:$0、$1、$2...,其中$0:0号位置参数是调用shell脚本的程序名;$1、$2、$3 ~ $9:命令行传递的位置参数;${10}...:对于多于10个(含)的位置参数,要添加{}引用例1:命令行位置参数少于10个,脚本param1如下# !/bin/bash # 指定...

weixin_39575758的博客 447

无涯教程-Shell Shift参数

无涯教程这章主要了解Shift命令,Shift命令是内置命令。命令以数字为参数。参数向下移动此数字。例如,如果数字为5,则$5变为$1,$6变为$2,依此类推。Shift 示例当参数未知时,通常使用Shift命令。在条件为的while循环中处理参数。只要参数不为零,则此条件成立。每次随着Shift命令执行,参数数量都会减少。/bin/bashthenecho 请输入一个参数。exit 1fidoecho 参数值: $1shiftdone执行脚本进行输出。

无涯教程 486
上一篇: Linux Shell脚本 - 统计多个文件的总大小
下一篇: Python读写二进制数据文件
海之子99
博客等级 码龄21年 53粉丝 147原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值