如何从数组数组中选择要循环的数组?

Jer*_*ska 3 bash select bash-array

#!/usr/bin/bash\n\n\nARGENT=("Nous devons \xc3\xa9conomiser de l'argent."\n"Je dois \xc3\xa9conomiser de l'argent.")\n\nBIENETRE=("Comment vas-tu?" "Tout va bien ?")\n\naoarrs=("${ARGENT}" "${BIENETRE}")\n\nselect arr in "${aoarrs[@]}"; do\n  for el in "${arr[@]}"; do\n    echo "$el"\n  done\n  break\ndone \n\n
Run Code Online (Sandbox Code Playgroud)\n

我希望此脚本将数组名称打印给用户,ARGENT并且BIENETRE\n以便用户可以选择其中之一。用户输入后,脚本将打印所选数组的每个元素。我想从数组的数组 ( ) 中选择select一个数组来循环aoarrs。我想使用 select 的原因是因为在现实世界中,我的数组数组中可能不止两个数组。我怎样才能做到这一点?

\n

gle*_*man 6

您将把数组名称存储在 中aoarrs,并在选择主体内声明所选名称的nameref

\n
ARGENT=("Nous devons \xc3\xa9conomiser de l\'argent."\n"Je dois \xc3\xa9conomiser de l\'argent.")\nBIENETRE=("Comment vas-tu?" "Tout va bien ?")\naoarrs=(ARGENT BIENETRE)\n\nPS3=\'Which array? \'\nselect arr in "${aoarrs[@]}"; do \n    [[ $arr ]] || continue\n    declare -n ref=$arr\n    for i in "${!ref[@]}"; do \n        printf \'%d\\t%s\\n\' $i "${ref[i]}"\n    done \n    break\ndone\n
Run Code Online (Sandbox Code Playgroud)\n

跑步可能看起来像

\n
1) ARGENT\n2) BIENETRE\nWhich array? 3\nWhich array? 4\nWhich array? 5\nWhich array? 2\n0   Comment vas-tu?\n1   Tout va bien ?\n
Run Code Online (Sandbox Code Playgroud)\n