iis服务器助手广告广告
返回顶部
首页 > 资讯 > 操作系统 >getopts解析shell脚本命令行参数的方法
  • 591
分享到

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

摘要

getopts命令格式 getopts optstring name [arg] optstring为命令行所有选项组成的字符串,每个字母代表一个选项。如果字母后有冒号:,表明该选项需要选择参数。比如说,执行getopt

getopts命令格式

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

代码示例

编写脚本test.sh

#!/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:

#!/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的命令行当中解析参数。

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脚本命令行参数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

--结束END--

本文标题: getopts解析shell脚本命令行参数的方法

本文链接: https://www.lsjlt.com/news/177473.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作