在 Shell 脚本中如何使用 eval 分配嵌套特殊字符来输出

在 Shell 脚本中如何使用 eval 分配嵌套特殊字符来输出

我试图将特殊的章程分配给附加了另一个变量的变量。

[root@STAGING scripting]# FILLBLANK=*******
[root@STAGING scripting]# k=1
[root@STAGING scripting]# eval echo  \"\${FILLBLANK$k}\"
***
[root@STAGING scripting]#

我如何在这里将输出分配给变量?

[root@STAGING scripting]# a=$(eval echo  \"\${FILLBLANK$k}\")
[root@STAGING scripting]# echo $a
= 1 b `echo filledvalue output reference.properties safe.sh sshpass-1.05-
1.el6.x86_64.rpm storefront_properties.sh storefront_properties.sh_bkp 
test.sh
[root@STAGING scripting]#

答案1

如果您想创建诸如 等变量foo1foo2使用eval来扩展其中之一,只需。 Bash、ksh 和 Zsh 支持数组和关联数组,它们只是为了索引而设计的。看BashGuide 数组简介

$ foo[0]=aa
$ foo[1]=bb
$ k=1
$ echo "${foo[$k]}"
bb

请注意引号在上面。事实上你的问题也与引号。不是分配给a,而是打印它(实际上,将其扩展为echo打印)

$a=*
$回显“$a”
*
$回显$a
[一大堆文件名...]

答案2

很难帮助您,因为您没有描述真正的问题,而是向我们展示了至少可以说很奇怪的代码。

但也许这对你有帮助:

FILLBLANK1="*******"
FILLBLANK[1]="*******"
k=1
echo "$FILLBLANK1"
echo "${FILLBLANK[1]}"
eval echo  \"\${FILLBLANK$k}\"
a="$(eval echo  \"\${FILLBLANK$k}\")"
echo "$a"

相关内容