【发布时间】:2023-02-10 01:21:30
【问题描述】:
我希望在 bash 中嵌套几个 For 循环以首先检查一个数组,然后基于该数组检查第二个数组。
#!/bin/sh
domArr=( "ABC" "DEF" "GHI" )
ABCarr=( "1" "2" "3" )
DEFarr=( "4" "5" "6" )
GHIarr=( "7" "8" "9" )
for domain in "${domArr[@]}"
do
# This should be 'domain = "ABC"'
for group in "${domain+arr[@]}"
do
# This should be 'group = "1"'
done
done
【问题讨论】:
-
做出选择:shebang
#!应该是#!/bin/bash或删除sh -
你想要的是一个间接引用.使用名称变量。也就是说,此代码将永远无法与 POSIX 标准
/bin/sh一起使用,它根本不支持数组。正如吉尔斯所说,你的 shebang 应该明确地启动具有所需功能的 shell。 -
有关间接引用的一般参考,请参阅BashFAQ #6。在目前的情况下,您希望
declare -n设置一个名称变量(declare -n curDomArr="${domain}arr",而unset -n curDomArr将其拆除。
标签: bash shell for-loop variables