重击案声明 [英] Bash case statement

查看:75
本文介绍了重击案声明的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图学习案例,就像编写一个功能齐全的脚本一样.

I'm trying to learn case as I was to write a fully functional script.

我从下面开始

#!/bin/sh
case $@ in

    -h|--help)
            echo "You have selected Help"
            ;;
    -B|-b)
            echo "You have selected B"
            ;;
    -C|-c)
            echo "You have selected C"
            ;;
      *)
            echo "Valid Choices are A,B,C"
            exit 1
            ;;
esac

我想使用以下两个选项:

I want to use two of these options:

./getopts.sh -h -c

但是我得到这个结果 有效选择是A,B,C

But i get this result Valid Choices are A,B,C

请您帮忙,让我知道我做错了吗?

Please can you help out and let me know what I'm doing wrong?

我想构建一个脚本,如果您输入一个选项,它将执行某些操作,如果您输入多个选项,则将执行多个操作.

I want to build a script that will do something if you enter one option but do multiple things if you enter multiple.

我还将如何将$ 1解析为该脚本,因为surley我输入的第一个选项(-h)将是$ 1?

Also how would i parse $1 to this script as surley which ever option i enter first (-h) will be $1 ??

谢谢!

推荐答案

尝试一下

#!/bin/sh

usage() {
    echo `basename $0`: ERROR: $* 1>&2
    echo usage: `basename $0` '[-a] [-b] [-c] 
        [file ...]' 1>&2
    exit 1
}


while :
do
    case "$1" in
    -a|-A) echo you picked A;;
    -b|-B) echo you picked B;;
    -c|-C) echo you picked C;;
    -*) usage "bad argument $1";;
    *) break;;
    esac
    shift
done

这篇关于重击案声明的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆