我正在try 制作一个shell脚本,它的运行方式如下:

script.sh -t application

首先,在我的脚本中,我想判断脚本是否使用-t标志运行.例如,如果运行时没有这样的标志,我希望它出错:

script.sh

其次,假设有一个-t标志,我想获取该值并将其存储在一个变量中,我可以在我的脚本中使用该变量,例如:

FLAG="application"

到目前为止,我在这方面取得的唯一进展是,$@获取了所有命令行参数,但我不知道这与标志有什么关系,或者这是否可能.

推荐答案

你应该阅读这getopts篇教程.

需要参数的-aswitch 示例:

#!/bin/bash

while getopts ":a:" opt; do
  case $opt in
    a)
      echo "-a was triggered, Parameter: $OPTARG" >&2
      ;;
    \?)
      echo "Invalid option: -$OPTARG" >&2
      exit 1
      ;;
    :)
      echo "Option -$OPTARG requires an argument." >&2
      exit 1
      ;;
  esac
done

就像格雷伯特说的(getopt!=getopts):

外部命令getopt(1)永远不会安全使用,除非您 Select know

Linux相关问答推荐

RabbitMQ 安装后没有自动启动

用于替换 struct 文档中文本的 Bash 脚本

构建 python 映像时 Docker compose 问题,访问被拒绝或存储库不存在

在服务器目录之外启动 DolphinDB 服务器时出错

另一个远程的 Git 合并分支

为什么在 find 命令中使用 dirname 会 for each 匹配项提供点?

跨多台计算机管理用户配置文件

Linux/Unix 手册页语法约定

sed: -i 不能与 Mac OS X 上的标准输入一起使用

-zxvf 在 tar -zxvf <文件名> 中是什么意思?

如何将文件从 Vagrant 机器复制到 localhost

无法在 Android Studio 中清理项目

禁用内存地址的随机化

在 C 中设置环境变量

如何列出附加到Linux中共享内存段的进程?

如何在 Linux 上取消关机?

Linux下的签名可执行文件

如何停止 Linux 上的不间断进程?

如何在redhat linux上安装maven

内联 if shell 脚本