Bash 脚本有几个参数总是有随机顺序如何总是以正确的顺序排列它们

Bash script has several parameters always have random order how to put them in correct order always

我的脚本被一个随机生成参数的程序调用,例如

input=12 output=14 destinationroute=10.0.0.0

然后使用生成的参数调用我的脚本:

./getroute.sh input=12 output=14 destinationroute=10.0.0.0

脚本里面是这样的:

 #!/bin/bash
 input=
 output=
 destinationroute=
 ...

程序总是以随机顺序调用参数(例如 input=12 output=14 或 output=14 input=12),我无法更改程序。

有什么方法可以识别正确的参数并将它们放在适当的位置。

您需要以不同的方式调用函数;例如:

./getroute.sh -i 12 -o 14 -d 10.0.0.0

然后在脚本中使用 getopt 读取变量。

编辑:

我的脚本知识不深;因此,应该有更好的方法来做到这一点。

由于您无权访问该程序,您可以在脚本中添加一些行以获取输入;例如:

input=`echo $* | grep -E -o "input=[0-9]{2}" | awk -F"=" {'print'}`

您可以对其他变量执行相同的操作。

如果顺序不对,请不要依赖顺序。只需遍历参数,查看它们匹配的模式,然后适当地分配给变量:

for arg; do # default for a for loop is to iterate over "$@"
  case $arg in
    'input='*) input=${arg#*=} ;;
    'output='*) output=${arg#*=} ;;
    'destinationroute='*) destinationroute=${arg#*=} ;;
  esac
done

如果出于某种原因,您确实想要更新</code>、<code></code>,您可以通过将以下代码放在上面的循环之后:</p> <pre><code>set -- "$input" "$output" "$destinationroute"