vieyahn2017 / shellv

shell command test and study
4 stars 1 forks source link

5.17 getopt #8

Open vieyahn2017 opened 6 years ago

vieyahn2017 commented 6 years ago

参数处理

vieyahn2017 commented 6 years ago

一个完整的例子example.sh

fun_do_a_property()
{
    echo "a($1)"
}

fun_do_b_property()
{
    echo "b($1)"
}

ARGS=`getopt -o hva:b: --long help,version,along:,blong: -- "$@"`
if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi
eval set -- "$ARGS"
while true;do
    case "$1" in
        -a|--along)
            echo "-a | --along"
            fun_do_a_property $2
            shift 2
            ;;
        -b|--blong)
            echo "-b | --blong"
            fun_do_b_property $2
            shift 2
            ;;
        -v|--version)
            echo "-v | --version"
            shift
            ;;
        -h|--help)
            echo "-h | --help"
            shift
            ;;
        --)
            shift
            break
            ;;
        *) 
            echo "未知的属性:{$1}"
            exit 1
            ;;
    esac
done

执行example.sh -a 123 -b 456

-a | --along
a(123)
-b | --blong
b(456)
vieyahn2017 commented 6 years ago

http://www.cnblogs.com/rwxwsblog/p/5668254.html

#!/bin/sh
#说明
show_usage="args: [-l , -r , -b , -w]\
                                  [--local-repository=, --repository-url=, --backup-dir=, --webdir=]"
#参数
# 本地仓库目录
opt_localrepo=""

# git仓库url
opt_url=""

# 备份目录
opt_backupdir=""

# web目录
opt_webdir=""

GETOPT_ARGS=`getopt -o l:r:b:w: -al local-repository:,repository-url:,backup-dir:,webdir: -- "$@"`
eval set -- "$GETOPT_ARGS"
#获取参数
while [ -n "$1" ]
do
        case "$1" in
                -l|--local-repository) opt_localrepo=$2; shift 2;;
                -r|--repository-url) opt_url=$2; shift 2;;
                -b|--backup-dir) opt_backupdir=$2; shift 2;;
                -w|--webdir) opt_webdir=$2; shift 2;;
                --) break ;;
                *) echo $1,$2,$show_usage; break ;;
        esac
done

if [[ -z $opt_localrepo || -z $opt_url || -z $opt_backupdir || -z $opt_webdir ]]; then
        echo $show_usage
        echo "opt_localrepo: $opt_localrepo , opt_url: $opt_url , opt_backupdir: $opt_backupdir , opt_webdir: $opt_webdir"
        exit 0
fi
vieyahn2017 commented 6 years ago

my file

#!/bin/bash

ARGS=`getopt -o i:p:b:c:s: --long ip:,port:,id:,process:,status: -- "$@"`
if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi
eval set -- "$ARGS"

ip="8.46.86.160"
port="8088"
ID="-1"
PROCESS="-1"
RUNNINGSTATUS="1"

usage="args: [-p|--ip , -p|--port , -b|--id , -c|--process, -s|--status]"

while [ -n "$1" ]
do
    case "$1" in
        -i|--ip)
            ip=`echo $2`
            shift 2
            ;;
        -p|--port)
            port=`echo $2`
            shift 2
            ;;
        -b|--id)
            ID=`echo $2`
            shift 2
            ;;
        -c|--process)
            PROCESS=`echo $2`
            shift 2
            ;;
        -s|--status)
            RUNNINGSTATUS=`echo $2`
            shift 2
            ;;
        --)
            shift
            break
            ;;
        *) 
            echo "unknown:{$1}"
            exit 1
            ;;
    esac
done

echo usage="$usage"
echo IP="$ip"
echo PORT="$port"
echo ID="$ID"
echo PROCESS="$PROCESS"
echo RUNNINGSTATUS="$RUNNINGSTATUS"

echo curl -d "{\"ID\":\"$ID\", \"PROCESS\":\"$PROCESS\", \"RUNNINGSTATUS\":\"$RUNNINGSTATUS\"}" -H "Content-Type: application/json" -k -X PUT "https://8.46.86.160:8088/deviceManager/rest/xxx/LUN_MIGRATION/UPDATE_TEST" 

curl -d "{\"ID\":\"$ID\", \"PROCESS\":\"$PROCESS\", \"RUNNINGSTATUS\":\"$RUNNINGSTATUS\"}"  -H "Content-Type: application/json" -k -X PUT "https://8.46.86.160:8088/deviceManager/rest/xxx/LUN_MIGRATION/UPDATE_TEST"