Yin的笔记本

vuePress-theme-reco Howard Yin    2021 - 2025
Yin的笔记本 Yin的笔记本

Choose mode

  • dark
  • auto
  • light
Home
Category
  • CNCF
  • Docker
  • namespaces
  • Kubernetes
  • Kubernetes对象
  • Linux
  • MyIdeas
  • Revolution
  • WebRTC
  • 云计算
  • 人工智能
  • 分布式
  • 图像处理
  • 图形学
  • 微服务
  • 数学
  • OJ笔记
  • 博弈论
  • 形式语言与自动机
  • 数据库
  • 服务器运维
  • 编程语言
  • C
  • Git
  • Go
  • Java
  • JavaScript
  • Python
  • Nvidia
  • Rust
  • Tex
  • Shell
  • Vue
  • 视频编解码
  • 计算机网络
  • SDN
  • 论文笔记
  • 讨论
  • 边缘计算
  • 量子信息技术
Tag
TimeLine
About
查看源码
author-avatar

Howard Yin

303

Article

153

Tag

Home
Category
  • CNCF
  • Docker
  • namespaces
  • Kubernetes
  • Kubernetes对象
  • Linux
  • MyIdeas
  • Revolution
  • WebRTC
  • 云计算
  • 人工智能
  • 分布式
  • 图像处理
  • 图形学
  • 微服务
  • 数学
  • OJ笔记
  • 博弈论
  • 形式语言与自动机
  • 数据库
  • 服务器运维
  • 编程语言
  • C
  • Git
  • Go
  • Java
  • JavaScript
  • Python
  • Nvidia
  • Rust
  • Tex
  • Shell
  • Vue
  • 视频编解码
  • 计算机网络
  • SDN
  • 论文笔记
  • 讨论
  • 边缘计算
  • 量子信息技术
Tag
TimeLine
About
查看源码
  • Shell拾遗

    • getopts和getopt
      • getopts
      • getopt

Shell拾遗

vuePress-theme-reco Howard Yin    2021 - 2025

Shell拾遗


Howard Yin 2019-12-03 16:04:03 Shell实操编程语言

# getopts和getopt

这两个都是用来解析脚本运行时的命令行参数的。

# getopts

只能处理短选项,无法处理长选项,暂不介绍

# getopt

可以同时处理短选项和长选项。

getopt命令不是一个标准的unix命令,但它在大多数Linux的发行版中都自带了有,如果没有,也可以从getopt官网上下载安装。

用法👇

<存储解析结果的变量>=`getopt [--options <短命令解析设置>] [--long <长命令解析设置>] [-n <解析错误时提示的脚本名>] <要解析的变量>`
1

下面这个示例

ARGS=`getopt -o :ab:c:: --long along,blong:,clong:: -n 'example.sh' -- "$@"`
1
  • -o或--options选项后面接可接受的短选项,如ab:c::,表示可接受的短选项为-a -b -c,其中-a选项不接参数,-b选项后必须接参数,-c选项的参数为可选的
  • :ab:c::开头的:表示不打印错误信息
  • -l或--long选项后面接可接受的长选项,用逗号分开,冒号的意义同短选项。
  • -n选项后接选项解析错误时提示的脚本名字

# --的用法

*nix 中,ls 命令是用来列出当前目录下的文件和子目录的。它可以接受一些选项(如 -lrt)。现在的问题是,如果有一个文件,它的名字叫做 -foobar,要怎样才能列出它的相关信息呢?

实际上 ls 内部使用了 getopts 解析参数。于是我们可以这样👇

ls -lrt -- -foobar
1

利用两个连续的连字符 --,显式地告诉 getopts:到这为止!然后,ls 会读入 -foobar 作为文件名,显示它的相关信息。

帮助我们改善此页面!
创建于: 2019-12-03 16:04:32

更新于: 2019-12-03 16:04:32