我正在尝试使用以下测试用例:
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 $(...))
来解释变量,并使用echo
all 来打印变量。
因此,为了清楚起见,如果想使用它来执行,它将采用 form$(eval echo $(...))
并打印 value echo $(eval echo $(...))
。
虽然我很欣赏有关关联数组的评论,但在这种情况下,我希望直接执行此操作,如上所示。