[英]Passing multiple arguments to bash
我有一个脚本,可根据您输入的参数启动某些节点
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*
以接受第二个参数以及其他任何参数一样,这样我就可以启动多个特定节点。
请帮忙
谢谢
将$1
移出参数列表,然后遍历其余参数。
case "$1" in
start)
shift
while [ $# -ne 0 ]
do
case "$1" in
puppet)
... ;;
puppet1)
... ;;
master)
... ;;
"")
... ;;
esac
shift
done ;;
shift
了你的命令,工作就休息。 这或多或少是我期望您的要求:
cmd="$1"
shift; # get rid of it.
if [ $# -eq 0 ]
then
# if there are no parameters, use puppet and master
set -- puppet master
fi
case "$cmd" in
start)
for node in "$@"
do
set_variables "$node" # slight rename here, make it easier to reuse
check_ES_reqs
start
done
;;
# ...
esac
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.