【shell】shell脚本读取给定参数 您所在的位置:网站首页 linux脚本获取输入参数的方法 【shell】shell脚本读取给定参数

【shell】shell脚本读取给定参数

2023-09-16 14:26| 来源: 网络整理| 查看: 265

目录

实例脚本

脚本

使用方法

数组获取参数

字符截取方法

解决类型

汇总

实例脚本

参数 $1, $2,..., $N代表了命令行的第1、2……N个参数,$0代表了本脚本的名字,$#代码参数个数,@代表参数列表

for arg in $@

推荐文章:http://t.csdn.cn/Cov0A

方法一:

(原文链接:https://blog.csdn.net/weixin_43919932/article/details/126201494)

bash内置的getopts工具了,用于解析shell脚本中的参数。

格式如下:

# 代码格式参考的这篇文章:https://cloud.tencent.com/developer/article/1629932 #!/usr/bin/bash while getopts ":a:b:h" opt_arg do case "$opt_arg" in "a") echo "参数 -a,值 $OPTARG" ;; "b") echo "参数 -b ,值 $OPTARG" ;; "h") echo "参数 -h,无值" ;; ":") echo "-$OPTARG 选项需要指定其value值" ;; "?") echo "不支持 -$OPTARG 选项" ;; *) echo "Unknown error while processing options" ;; esac echo "option index is $OPTIND" done

参数列表':a:b:c:hk::解释:后面有“:”号的表示这个参数 需要参数值,没有“:”的表示不需要参数值。

OPTARG表示选项值,OPTIND表示参数索引位置。 输入命令 cmd -a 1。 此时命中a选项,那么OPTIND为3,表示当前在第三个参数位置。 命令cmd -a 1 -b 2 。同理,当命中a之后,命中b时,OPTIND为5,表示当前在第五个参数位置。 a后面有:,表示该选项需要参数,h后面没有:,表示不需要参数。如果是可选参数,跟 “::” 。

注意:

这里第一个:表示,使用抑制错误报告模式。 该模式在识别到无效选项时,会命中?,且当前选项字符会保存在OPTARG中。在识别到需要参数的选项,没有携带参数时,会命中:,且当前选项字符会保存在OPTARG中。 逻辑参数:参数列表【abc:d:】 - copy -x - 命中“?”, OPTARG被设置为x - copy -c # 没有指定c的参数 - 命中 “:”,OPTARG被设置为c

方法二 脚本

myshell.sh 

-b:|-B:)  表示给的参数形式是 -b:xxx或者-B:xxx

-b=|-B=)  表示给的参数形式是 -b=xxx或者-B=xxx

#!/bin/sh #shell 截取字符知识:https://www.cnblogs.com/cangqinglang/p/11952838.html function ParaAnalyse() { if [ -z "$1" ] then echo no para to analyse else para=$1 local paraType=${para:O:3} #从O开始,截取3个字符? case $paraType in -b:|-B:) boardType=${para:3};; #从左边第3个字符开始,一直到结束。 -s:|-S:) BuildType=${para:3};; -f:|-F:) filter="-f ${para:3} $filter" ;; -t:|-T:) specCaseTag="${para :3}";; -e:|-E:) excludeTag="${excludeTag} -e ${para:3}";; -c:|-C:) IP=${para:3};; -m:|-M:) macro2add=${para:3};; -p:|-P:) productType=${para:3};; -v:|-V:) ftVersion=${para:3};; coy) BUILD_GCOV=1;; -h|-H) #help echo echo run_eFT.sh [-b :BPQ] [-s:aU/c/cc/build/runj[v:3_O/qcelIJ echo [-f:”fixtu re :case”j [-t :“tag”J [-p : lf/hl][-h] echo Options: echo -b: board type, BPQ, default is BPQ. echo -s: “\“\ means just create project\; \“ccV’create and build project; \“run\” just run the cases;” echo \“all\” for create, build and test, it isthe default value”. echo -f: used to filter cases, with fixture and case name, all for default. echo -t: used to filter cases, with tag name,all for default. echo -p: -p:hl/lf/subl g, default If echo -v: use -v:3_0 to specify build spa ft 3.0or qceli,default is 2.0, you should also use -v:3_O to run 3.0 te stcase echo view the help echo exit 0 ;; *) esac fi } function ParaLoop() { for arg in $@ do echo $arg ParaAnalyse $arg done } function BuildProject() { ParaLoop $@ echo "boardType is" ${boardType} echo "BuildType is" ${BuildType} echo "filter is" ${filter} echo "specCaseTag is" ${specCaseTag} echo "excludeTag is" ${excludeTag} } BuildProject $@ 使用方法

./myshell.sh  -b:b_agr -S:s_arg -E:e_arg ……

数组获取参数

数组:Shell 数组 | 菜鸟教程

后来想出用数组方式,通过for循环,然后索引减1的方式获取。shell数组索引也是从0开始。

[root@machine1 ~]# cat a.sh

#!/bin/bash

total=$#

array=($*)

for ((i=1;i



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有