linux - 如何 'case' 一个参数

标签 linux bash

我正在编写一个 bash 脚本,它可以按时间间隔进行过滤,也可以不进行过滤。我如何case它们,所以如果“from”参数存在并且“to”参数不存在,那么它将执行仅过滤第一个参数的函数。例如:myscript.sh --从 18:00 --到 20:00

我尝试了以下方法:

#!/bin/bash
FROM_TIME_ARGUMENT=$1
FROM_TIME=$2

TO_TIME_ARGUMENT=$3
TO_TIME=$4

FILTER_TIME()
{
    #... i don't know
}

FILTER_TIME

我一直在为它写案例。

最佳答案

你想要的是 getopt 函数。请参阅“man getopt”或谷歌搜索。

while getopts ab: ooptdo
case $oopt in
    a) var1=1;;
    b) var2=$OPTARG;;    
    esac
done

将逐步介绍您的选项“-a -b xyz”。

关于linux - 如何 'case' 一个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19353889/

相关文章:

bash - 递归 wget 不起作用

linux - 执行嵌套 bash 脚本时找不到命令

linux - 在 Linux 中使用 -sort

linux - 读取NAND闪存并将其写入另一个系统

linux - 期待带有 sshfs 的解释器

bash - Linux 源代码在 .sh 文件中不起作用?

linux - 读取 bash 命令输出的最后一行

c# - 使用 SSH.NET SshClient.RunCommand 执行的命令 (.4gl) 失败,返回 "No such file or directory"

linux - 从进程 (Nagios) 调用时,Perl 脚本无法打开 root 拥有的文件

linux - 移动到 *nix 屏幕中的上一个区域