使用管道生成执行变量

使用管道生成执行变量

我正在尝试使用以下测试用例:

countAlpha=10;bob=alpha; echo $(echo $bob | sed 's/[a-z]/\U&/; s/^/\$count/') $countAlpha

产生以下结果:

$countAlpha 10

我想做的是找到一种执行/扩展 $countAlpha 的方法,以便我可以使用管道生成可在其他执行中使用的变量。因此,预期目标是:

10 10

作为输出(该变量在之后被回显,作为一种健全性检查,以确保 bash one liner 实际上具有正确的值,但不会在最终结果中使用,否则不需要询问)。不幸的是,这些并不总是数字,使用 bash 加法作为偏移量,例如 $((i +x)) 在这里没有帮助。

我知道在 bash 中有很多转义的方法(例如“”和“'”,具体取决于转义级别),但不知道如何做相反的事情。提前致谢。

答案1

所以经过更多的摆弄之后,我找到了答案并想分享回来。

countAlpha=10;bob=alpha; echo $(eval echo $(echo $bob | sed 's/[a-z]/\U&/; s/^/\$count/')) $countAlpha
10

关键部分是使用echo $(eval echo $(...))来解释变量,并使用echoall 来打印变量。

因此,为了清楚起见,如果想使用它来执行,它将采用 form$(eval echo $(...))并打印 value echo $(eval echo $(...))

虽然我很欣赏有关关联数组的评论,但在这种情况下,我希望直接执行此操作,如上所示。

相关内容