如何创建带参数的Shell脚本?

Bash

1 前言

一个问题,一篇文章,一出故事。
笔者经常写一些脚本,想着便于规范,于是写一个简单且规范一点的Demo,以便后面套用。

2 最佳实践

2.1 简单的参数范例

#!/bin/bash

if [ "$1" == "" ]; then
        echo "Usage: $0 parameter"
        exit 1;
fi

echo "execute script"
exit 0

注:脚本应当默认带参数提示,防止直接执行。

2.2 多参数范例

#!/bin/bash

addUser() {
        echo addUser
}

getUser() {
        echo getUser
}

delUser() {
        echo delUser
}

case "$1" in
        add)
                addUser
                ;;
        get)
                getUser
                ;;
        del)
                delUser
                ;;
        *)
                echo "Usage: $0 {add|get|del}"
                ;;
esac
exit 0

2.3 多层多参数范例

#!/bin/bash

parameter1="$1"
parameter2="$2"

addUser() {
        echo addUser
}

getUser() {
        echo getUser
}

delUser() {
        echo delUser
}

resetUserPasswd() {
        echo resetUserPasswd
}

sendUserPasswd() {
        echo sendUserPasswd
}

case "$parameter1" in
        user)
                case "$parameter2" in
                        add)
                                addUser
                                ;;
                        get)
                                getUser
                                ;;
                        del)
                                delUser
                                ;;
                        *)
                                echo "Usage: $0 user {add|get|del}"
                                ;;
                esac
                ;;
        passwd)
                case "$parameter2" in
                        reset)
                                resetUserPasswd
                                ;;
                        send)
                                sendUserPasswd
                                ;;
                        *)
                                echo "Usage: $0 passwd {reset|send}"
                                ;;
                esac
                ;;
        *)
                echo "Usage: $0 {user|passwd}"
                ;;
esac
exit 0
没有评论

发表回复

Bash
如何用Tigase监控postfix smtp服务?

1 前言 一个问题,一篇文章,一出故事。 笔者生产中的smtp服务器最近因为负载均衡器的路由故障而导 …

Bash
如何用Tigase监控Elasticsearch集群?

1 前言 一个问题,一篇文章,一出故事。 笔者生产中有一套Elasticsearch集群,笔者为了能 …

Bash
如何用Base Shell获取ES集群状态?

1 前言 一个问题,一篇文章,一出故事。 笔者想要通过Base Shell获取Elasticsear …