如果在 bash 脚本中从 $@ 找到第 n 个值作为字符串匹配的一部分,如何找到第 (n+1) 个参数值

How to find (n+1)th argument value if you find nth value as part of string match from $@ in a bash script

我们有一个 Bash 脚本。如果从 $@ 中找到第 n 个值作为字符串匹配的一部分,如何找到第 (n+1) 个参数值。 n 未知。

  1. 有没有办法找到n的位置或值?我知道如果输入参数与我要查找的所需字符串匹配,我可以找到它。
  2. 如果我从输入列表中找到参数,如何找到下一个(第(n+1))个位置的输入参数。

您可以遍历参数。

#!/usr/bin/env bash
n=1
for f; do
  printf '%s %s\n' "$n" "$f"
  ((n++))
done

运行反对一堆论点。

./myscript {a..z}

输出

1 a
2 b
3 c
4 d
5 e
6 f
7 g
8 h
9 i
10 j
11 k
12 l
13 m
14 n
15 o
16 p
17 q
18 r
19 s
20 t
21 u
22 v
23 w
24 x
25 y
26 z

如果您只对一个论点感兴趣,请说 g

#!/usr/bin/env bash

n=1
for f; do
  [[ $f == g ]]  &&  printf '%s %s\n' "$n" "$f"
  ((n++))
done
./myscript {a..z}

输出

7 g

要回答 n+1 参数,put/assign 数组中的参数并遍历索引,现在假设您想要 g 之后的下一个参数,请注意 n+1 标记点和数组从零开始计数,而不是从一开始,类似于。

#!/usr/bin/env bash

args=("$@")

for n in "${!args[@]}"; do
  [[ ${args[n]} == g ]] && echo "${args[n+1]}"
done
./myscript {a..z}

输出

h