Shell脚本中shift的用法

位置参数可以用shift命令左移。

比如shift 3表示原来的$4现在变成$1,原来的$5现在变成$2等等,将原来的$1$2$3丢弃,$0不移动。

不带参数的shift命令相当于shift 1

非常有用的 Unix 命令:shift。我们知道,对于位置变量或命令行参数,其个数必须是确定的,或者当 Shell 程序不知道其个数时,可以把所有参数一起赋值给变量$*。若用户要求 Shell 在不知道位置变量个数的情况下,还能逐个的把参数一一处理,也就是在 $1 后为 $2,在 $2 后面为 $3 等。在 shift 命令执行前变量 $1 的值在 shift 命令执行后就不可用了。

如在脚本可以如下操作

opt=$1
shift 1
if [[ $# -ne 0 ]]; then
    set $@
fi

用户使用脚本需要若干个参数,其中第一个参数作为选择参数,在脚本读入第一个参数之后,将后面的参数统一向左移动一位,如果后面参数个数不为0,以数组的形式赋值,此时输入时第2个到第n个参数变为$1~$n-1

对于参数部分的判断

case $opt in
    config)
        if [[ $# -lt 4 ]]; then
            echo "Malformed arguments for config: $@"
            usage >&2
            exit 1
        fi
        conf $@
        ;;
    remove)
        if [[ $# -ne 2 ]]; then
            echo "Malformed arguments for remove: $@"
            usage >&2
            exit 1
        fi
        rmv $@
        ;;
       -h | --help)
        usage
        ;;
    *)
        usage >&2
        exit 1
        ;;
esac

用一个usage函数来解释脚本如何使用。
其中>&2 也就是把结果输出到和标准错误一样,当参数个数不对时,将会显示usage并退出程序。

而在每个执行函数中,需要用local指定变量

conf ()
{
    
    
   local name=$1
   local service=$2
   …
   …
}

猜你喜欢

转载自blog.csdn.net/Maestro_T/article/details/108378389