将多个参数传递给bash

时间:2019-01-14 21:55:10

标签: linux bash arguments

我有一个脚本,可以根据您输入的参数启动某些节点

case "$1" in
    start)
        if [ "$2" == "puppet" ]; then
           set_puppet_variables
           check_ES_reqs
           start
        elif [ "$2" == "puppet1" ]; then
           set_puppet1_variables
           check_ES_reqs
           start
        elif [ "$2" == "master" ]; then
           set_master_variables
           check_ES_reqs
           start
        fi
        if [ "$2" == "" ]; then
             set_puppet_variables
             check_ES_reqs
             start
             set_master_variables
             check_ES_reqs
             start
         fi

我希望能够启动多个特定节点,例如,当我键入命令服务ES start puppet puppet1 时,它将仅启动这两个节点。

是否有一种方法可以根据我添加的节点数量来格式化$2以便接受$3$4?因为会有更多。就像将$2变成$2*一样接受第二个参数和其他参数,这样我就可以启动多个特定节点。

请帮助

谢谢

2 个答案:

答案 0 :(得分:2)

$1移出参数列表,然后遍历其余参数。

case "$1" in
    start)
        shift
        while [ $# -ne 0 ]
        do
            case "$1" in 
                puppet)
                    ... ;;
                puppet1)
                    ... ;;
                master)
                    ... ;;
                "")
                    ... ;;
            esac
            shift
        done ;;

答案 1 :(得分:2)

create procedure delcomments as delete from comments where comments.comments=@comment1 @comment1 : input comment by me ,然后执行其余的操作。这或多或少是我期望您所需要的:

shift