当前位置: 首页 > Linux

r如何处理SHandlingShell脚本参数

时间:2023-04-06 21:25:25 Linux

在《shell必备基础知识》中提到了一些入口参数的基本使用:/home/shouwang/test.shpara1para2para3$0$1$2$3脚本名第一个参数第三个参数What's不便?看到这里,你可能觉得这没什么。这不是学shell的人都知道的知识吗?但是你觉得这样使用参数会有这样的问题吗?要知道参数的顺序,确定每个位置的参数的含义。您不能随意更改位置。使用第三个参数,你必须有第一个,第二个参数很简单,下面我举例说明。参数的顺序是固定的#!/usr/bin/envbash#test.shecho"para1$1"echo"para2$2"echo"para3$3"这个脚本很简单,只输出第一个、第二个和第三个参数:$。/测试。sh123para11para22para33你看,这样para1就对应第一个参数,如果位置改变了,就会改变:$./test132para11para23para32只要改变顺序,参数就会改变不匹配。假设你有时候不需要第二个参数,但是如果你想使用第三个参数,你还需要输入第二个参数吗?优雅地处理shell参数铺垫了这么多,这篇文章到底想介绍什么?其实你已经接触过很多这种形式了。对于我写的这个程序,我在《如何优雅地处理命令行参数》里已经介绍过了,想必大家在使用linux命令的时候已经体验过,例如:$find-name"filename"使用-name参数指定要查找的文件名发现,并不是第一个参数是文件名第二个参数是xxx。那么shell脚本如何将参数视为这样的选项呢?它们其实很相似,看下面的例子:#!/usr/bin/envbash#-nname#-aauthor#-hhelpwhilegetopts":n:a:h"optnamedocase"$optname"in"n")echo"getoption-n,valueis$OPTARG";;"q")echo"getoption-a,valueis$OPTARG";;"h")echo"getoption-h,eg:./test.sh-nprogrammingbeads-awatchman";;":")echo"选项$OPTARG没有参数值";;"?")echo"Unknownoption$OPTARG";;*)echo"处理选项时出现未知错误";;esac#echo"optionindexis$OPTIND"done解释:有两个预定义变量,OPTARG代表选项值,OPTIND代表参数索引位置,类似于上面提到的$1。n后面有:表示该选项需要参数,h后面没有:表示不需要参数开头的冒号,表示出现错误时保持静默并抑制正常的错误信息。我们来试试效果:$./test.sh-aNoargumentvalueforoptiona$./test.sh-hgetoption-h,eg:./test.sh-nProgrammingPearl-aWatchman$./test.sh-nProgrammingPearl-aWatchman获取选项-a,value为守望先生,可以这样使用参数,不需要关心参数的位置,而且参数还是可选的,互不干扰。以上就是良序教程网为各位小伙伴分享的Shell脚本参数的处理。以上就是良序教程网为各位小伙伴们分享的Linux相关知识。