Shell脚本编写以形成动态数组并基于该数组触发一个过程

默西

嗨,我有一个要求。

我应该运行一个脚本,其中指定的参数数量如下所示。例如./build.sh ab checkout c build de deploy

a,b,c,d,e,f是实例的名称,而checkout,build,deploy是进程的名称。

因此,我可以使用任何进程来运行任何实例。

现在告诉我如何将这些参数分开并在shell脚本中使用它们。

如果参数的类型相似,我可以在数组中使用它们,并使用for循环和switch大小写检查每个参数。

在我的情况下,我必须将参数分开并使其像

  1. 结帐a和b。
  2. 为c建立
  3. 为d和e部署

需要形成一些动态数组和类似的操作

  1. a,b应该形成一个数组,并且应该检测出检出并开始执行。
  2. 与c类似,它应该形成一个数组,并且应该检测生成过程并开始执行。
  3. d和e应该形成一个数组并运行部署过程。

如果有其他实现方法,请建议我,并向我提供解决方案。

温特穆特

老派的POSIX外壳:

#!/bin/sh

# Note: Inside the functions, $@, $1 etc. refer to the arguments to the function,
# whereas outside they refer to the arguments to the whole script.    
foo() {
    echo foo $@
}

bar() {
    echo bar $3 $2 $1 
}

PARAMS=

while [ $# -gt 0 ]; do    # while there are arguments
    case "$1" in          # check if the front argument is a command
    foo)                  # if so, run it with the previously cached parameters
        foo $PARAMS       # (see below)
        PARAMS=
        ;;
    bar)
        bar $PARAMS
        PARAMS=
        ;;
    *)                    # if it is not a command, cache the parameter in the
        PARAMS+=" $1"     # $PARAMS variable
        ;;
    esac

    shift                 # shift the arguments back; what was $2 is now $1
done

称为./foo.sh 1 2 foo 3 4 5 bar,这给出了

foo 1 2
bar 5 4 3

如果您需要使用bash数组,则其语法为

PARAMS=()       # instead of PARAMS=
PARAMS+=("$1")  # instead of PARAMS+=" $1"
${PARAMS[0]}    # instead of $1, analogous for $2, $3 etc.

其余部分保持不变,当然,您可以使用参数数组调用函数以外的其他事情。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

编写一个函数,基于JS中的输入数组创建动态输出

是否可以在JSON模式中具有动态大小的数组,该数组的大小基于另一个值

我如何编写一个函数来从数组形成一个字符串?

如何编写一个Bash脚本,该脚本将基于Linux的Watch输出对Ceph集群做出反应

如何编写一个大函数来对行是动态的动态数组中的读取进行排序?

Shell 脚本:将关联数组传递给另一个 Shell 脚本

编写一个bash shell脚本,该脚本在用户定义的时间内消耗恒定数量的RAM

编写一个递归方法,该方法调用一个整数数组,并以相反的排序顺序返回该数组

当且仅当前一个命令的过程完成时,如何编写bash脚本才能触发下一个命令

在数组中传递一个变量以动态更新该变量 - 在 Vue.js 中

给定一个整数数组arr,当且仅当该数组中每个值的出现次数唯一时,编写一个返回true的函数

从另一个动态编写bash脚本?

写一个动态数组

动态创建一个json数组

运行shell脚本而不关闭前一个过程

如何编写一种方法,该方法接受类型为x的数组以及与该数组具有相同类型的另一个变量

在函数中定义一个动态数组,然后返回该数组元素。如何释放阵列的内存?

基于另一个数组加入数组

如何在执行该过程的一些计算时将数组值传递给另一个?

Swift - 基于另一个称为查询的数组有效地查询一个整数数组,该数组具有第一个数组的索引

创建一个bash脚本,该脚本创建30个睡眠过程

如何在shell脚本中循环一个jq数组结果

编写一个程序,该程序查找数组中连续相等元素的最大序列。C#

我有一个对象数组作为输入,使用其中的字段,我必须为 salesforce 形成一个动态查询

比较 2 个 jsons 数组并从中形成一个数组?

使用“广泛匹配”样式的过滤方法,基于Google Apps脚本中的另一个数组过滤一个数组

如果一个对象可以容纳一个数组,如何访问该数组?

开发一个PHP脚本,该脚本每天向您发送一个关联数组的电子邮件

编写一个 collatz 程序,希望在 n == 1 时重复该过程