/images/avatar.png

Schaepher's Blog

Bash 脚本长参数(getopts)

在脚本里面使用 getopts 获取参数。

示例

test2.sh

#!/bin/bash

function main() {

    local OPTIND

    count=0

    while getopts ab:-: OPT
    do
        echo "current -${OPT}${OPTARG}"

        case "${OPT}" in 
            -)
                case "${OPTARG%%=*}" in
                    atest)
                        echo "option: --${OPTARG}"
                        echo ""
                        let count++
                        ;; 
                    btest)
                        echo "option: --${OPTARG%%=*}"
                        echo "value: ${OPTARG#*=}"
                        echo ""
                        let count=count+2
                        ;;
                esac
                ;; 
            a)
                echo "option: ${OPTIND}"
                echo ""
                let count++
                ;; 
            b)
                echo "option: ${OPTIND}"
                echo "value: ${OPTARG}"
                echo ""
                let count=count+2
                ;; 
        esac
    done

    shift $count

    echo "rest option(s): $@"
}

main "$@"

执行:

Bash 脚本长参数(getopt)

在脚本里面使用 getopt 获取参数。

示例

test.sh

#!/bin/bash

ARGS=$(getopt --option ab: --long atest,btest: -- "$@")
eval set -- "${ARGS}"

while true
do
    echo "current $1"

    case "$1" in
        -a|--atest)
            echo "option: $1"
            echo ""
            shift 1
            ;;
        -b|--btest)
            echo "option: $1"
            echo "value: $2"
            echo ""
            shift 2
            ;;
        --)
            shift
            echo "break"
            echo ""
            break
            ;;
    esac
done

echo "rest option(s): $@"

如果执行:

MySQL 笔记

字符串转整形排序

法一:CAST

SELECT val FROM test ORDER BY CAST(val AS unsigned);

MySQL 5.6 不支持直接 cast 到 integer,所以使用 signed 或者 unsinged。

法二:加减法

SELECT val FROM test ORDER BY 0 + val;
SELECT val FROM test ORDER BY 0 - val;
SELECT val FROM test ORDER BY -val;

同 0 - val