脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - shell - getopts解析shell脚本命令行参数的方法

getopts解析shell脚本命令行参数的方法

2023-03-20 12:23yayagogogo shell

getpots是Shell命令行参数解析工具,旨在从Shell Script的命令行当中解析参数,这篇文章主要介绍了getopts解析shell脚本命令行参数,需要的朋友可以参考下

getopts命令格式

?
1
getopts optstring name [arg]
  • optstring为命令行所有选项组成的字符串,每个字母代表一个选项。如果字母后有冒号:,表明该选项需要选择参数。比如说,执行getopts时,匹配到了-i选项,则将-i相应的参数保存在内置变量OPTARG中。如果字母后无:,表明该选项不要指定值,仅有true/false之分。optstring起始的第一个冒号,则表示执行命令中出现optstring中没有的选项时忽略错误。
  • name为变量。每执行一次getopts,会获取执行命令行中的下一个选项。当执行命令的选项与optstring匹配时,将选项放在name中。否则,name被设置为?。
  • arg是选项和参数组成的列表。可选项,

代码示例

编写脚本test.sh

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/bash
 
while getopts ":i:o:b" i
do
        case ${i} in
                i) input_dir="$OPTARG";;
                o) out_dir="$OPTARG";;
                b) relax=true;;
        esac
done
 
echo $input_dir
echo $out_dir
echo $relax

执行test.sh结果

~/tmp$ bash test.sh -i ./input/ -o ./output/ -a -b
./input/
./output/
true

PS:linux shell 解析命令行参数 | while getopts用法

linux shell 解析命令行参数|getpots

demo:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/bin/bash
 
func() {
    echo "Usage:"
    echo "test.sh [-j S_DIR] [-m D_DIR]"
    echo "Description:"
    echo "S_DIR,the path of source."
    echo "D_DIR,the path of destination."
    exit -1
}
 
upload="false"
 
while getopts 'h:j:m:u' OPT; do
    case $OPT in
        j) S_DIR="$OPTARG";;
        m) D_DIR="$OPTARG";;
        u) upload="true";;
        h) func;;
        ?) func;;
    esac
done
 
echo $S_DIR
echo $D_DIR
echo $upload

输出

sh test.sh -j /data/web -m /opt/data/web
##输出结果
/data/web
/opt/data/web
false

  • optstring列出了对应的Shell脚本可以识别的所有参数,例如:需要使用-a,-f,-s参数时,optstring是afs;如果需要命令行参数后面还跟随一个值,则在相应的optstring后面加冒号,例如a:fs 表示a命令行参数后面会有一个值,是**-a value**的形式;
  • getopts执行时若匹配到a参数,会把-a参数对应的value存放在一个叫OPTARG的Shell Variable中;
  • 如果optstring是以冒号开头,则表明当命令行出现了optstring中没有的参数将不会提示错误信息

getpots

getpots是Shell命令行参数解析工具,旨在从Shell Script的命令行当中解析参数。

?
1
getopts optstring name [arg...]

optstring列出了对应的Shell Script可以识别的所有参数。比如:如果 Shell Script可以识别-a,-f以及-s参数,则optstring就是afs;如果对应的参数后面还跟随一个值,则在相应的optstring后面加冒号。比如,a:fs 表示a参数后面会有一个值出现,-a value的形式。

name表示的是参数的名称,每次执行getopts,会从命令行当中获取下一个参数,然后存放到name当中。如果获取到的参数不在optstring当中列出,则name的值被设置为?。

到此这篇关于getopts解析shell脚本命令行参数的文章就介绍到这了,更多相关shell脚本命令行参数内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://www.cnblogs.com/chaimy/p/17044513.html

延伸 · 阅读

精彩推荐
  • shelllinux shell 中 2>&1的含义

    linux shell 中 2>&1的含义

    linux shell 中21的含义 脚本: nohup /mnt/Nand3/H2000G /dev/null 21 对于 1 更准确的说应该是文件描述符 1,而1 一般代表的就是STDOUT_FILENO,实际上这个操作就是一个dup2(...

    脚本之家11642022-12-15
  • shell一个强大的网络分析shell脚本分享(实时流量、连接统计)

    一个强大的网络分析shell脚本分享(实时流量、连接统计)

    这篇文章主要介绍了一个强大的网络分析shell脚本分享,此脚本包含实时流量统计、连接统计强大功能,需要的朋友可以参考下...

    shell教程网10332023-02-24
  • shelllinux bash shell中case语句的实例

    linux bash shell中case语句的实例

    本文介绍下,在bash shell编程中,有关case语句的一个例子,学习下case语句的用法,有需要的朋友参考下...

    脚本之家5792022-12-22
  • shellshell输出重定向的实现

    shell输出重定向的实现

    本文主要介绍了shell输出重定向的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编...

    金色熊族7302023-03-20
  • shell使用bash shell删除目录中的特定文件的3种方法

    使用bash shell删除目录中的特定文件的3种方法

    这篇文章主要介绍了使用bash shell删除目录中的特定文件的3种方法,分别为扩展模式匹配符、GLOBIGNORE 变量和find 命令,需要的朋友可以参考下...

    shell教程网8752023-02-14
  • shelllinux Nginx 日志脚本

    linux Nginx 日志脚本

    这篇文章主要介绍了nginx日志切割脚本、nginx日志分析脚本等,需要的朋友可以参考下...

    脚本之家10292022-12-24
  • shellshell写的告警次数控制及恢复示例代码

    shell写的告警次数控制及恢复示例代码

    自己写的一个监控脚本,发现告警短信次数未控制时,垃圾短信N多。经过思考,做了个简单的控制,同一故障只发送二次。之后不再发送。恢复后发送恢复...

    shell教程网7062022-12-09
  • shelllinux shell命令行选项与参数用法详解

    linux shell命令行选项与参数用法详解

    本文介绍了linux shell中使用命令行选项与命令行参数的方法,在bash中,可以用以下三种方式来处理命令行参数,每种方式都有自己的应用场景...

    shell教程网9842023-02-07