【问题标题】:How to refer variable value inside for loop along with incrementing variable name in Bash scripting如何在for循环中引用变量值以及在Bash脚本中增加变量名
【发布时间】:2020-05-04 11:57:32
【问题描述】:

我们有下面这样声明的变量

CONNECT_ERETAIL1="-h17.XXX.XXX.XX1 -uroot -pXXXXXX"
CONNECT_ERETAIL2="-h17.XXX.XXX.XX2 -uroot -pXXXXXX"

ERETAIL_DB1=/usr01/eretail_db1.txt
ERETAIL_DB2=/usr01/eretail_db2.txt

我们需要在for循环中引用它们

for i in 1 2
do
echo $"CONNECT_ERETAIL""$i"
echo $"ERETAIL_DB""$i"
done

预期的输出是:-

-h17.XXX.XXX.XX1 -uroot -pXXXXXX
/usr01/eretail_db1.txt
-h17.XXX.XXX.XX2 -uroot -pXXXXXX
/usr01/eretail_db2.txt

如何做到这一点?

【问题讨论】:

  • 尝试shellcheck.net 验证您的脚本。
  • 感谢您回复@Jetchisel,但是,我不想验证我的代码。我正在为描述中所示的预期输出寻求解决方案

标签: bash shell for-loop unix


【解决方案1】:

这就是你所关心的:

for i in 1 2; do
    t1="CONNECT_ERETAIL$i"
    t2="ERETAIL_DB$i"
    echo "${!t1}"
    echo "${!t2}"
done

您可以阅读更多关于这种参数扩展的信息in this manual

此外,不鼓励使用全大写变量,因为它们可能与 bash 环境变量冲突。

【讨论】:

  • 非常感谢@Quasimodo,这正是我想要的 :)
  • 感谢@RavinderSingh13 的好话!很高兴为您提供帮助,nitin194。
  • 你能为这个问题推荐一个更好的标题吗?我认为可以用更好的方式问它
  • @nitin194 也许“如何扩展另一个变量的扩展标识的变量?”
  • 是的,这可能会更好,希望我可以编辑它。有办法吗?
猜你喜欢
  • 2014-01-07
  • 2013-11-25
  • 1970-01-01
  • 2017-01-26
  • 2016-04-14
  • 2014-11-17
  • 2020-06-09
  • 2011-02-24
  • 2018-06-30
相关资源
最近更新 更多