目录

Shell脚本接受参数

注意
本文最后更新于 2021-10-29,文中内容可能已过时。

直接传参

一般情况下直接传参,比如

test.sh

#!/bin/bash
echo hello $1

./test.sh world hello world

使用getopts解析参数

这种方法可以忽略参数位置,使脚本更完善

test.sh

while getopts "a:b:c" arg           #选项后面的冒号表示该选项需要参数
do
        case $arg in
             a)
                echo "a $OPTARG"    #参数存在$OPTARG中
                ;;
             b)
                echo "b $OPTARG"
                ;;
             c)
                echo "c"
                ;;
             ?)                     #当有不认识的选项的时候arg为?
            echo "unkonw argument"
        exit 1
        ;;
        esac
done
~$ ./test.sh -a 1 -b 2 -c  
a 1  
b 2  
c

使用shift

#!/bin/bash

help() {
    cat <<-EOF
这里是帮助文档
EOF
}

[ $# -eq 0 ] && help && exit 0
while [[ $# -gt 0 ]]; do
    case "$1" in
    -n | --name)
        name="$2"
        shift
        ;;
    -c | --count)
        count="$2"
        shift
        ;;
    -h | --help)
        help
        exit 0
        ;;
    --)
        shift
        ;;
    *)
        help
        exit 0
    esac
    shift
done

echo name: $name
echo count: $count