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

问题描述 投票:0回答:1

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

  1. 是否可以找到n的位置或值?我了解,如果输入参数与所需的字符串匹配,我可以找到它。
  2. 如果我从输入列表中找到参数,如何找到下一个((n + 1))个位置的输入参数。
linux bash shell unix ksh
1个回答
0
投票

您可以遍历参数。

#!/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

如果您只对一个论点感兴趣。

#!/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参数,请将参数放在数组中并遍历索引,类似。

#!/usr/bin/env bash

args=("$@")

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

输出

h
© www.soinside.com 2019 - 2024. All rights reserved.