bash |变量中的变量

bash | variable in variable

我想像这样获取 tomcat.tar.gz 文件的版本号

read -p echo " Enter Version (8 or 9)" version

version8=$(printf -- '%s\n' * | grep -oP 'apache-tomcat-$version\K.*(?=\.tar\.gz)')
version9=$(printf -- '%s\n' * | grep -oP 'apache-tomcat-$version\K.*(?=\.tar\.gz)')

echo $version8 #or better $version${version}, but that doesn't work, too

根据用户输入的版本,我将从当前文件夹中的 gz 文件中收到版本号。

示例: 在我的文件夹中有两个 tar.gz

启动脚本:

输入版本(8 或 9):8

输出应该是:8.5.78

使用上面的代码我一无所获。它出什么问题了?我怀疑这是由于变量(version8)中的变量(version)引起的。它在语法上如何正确?

如果您有兴趣,我正在与 awk 合作,如下:

read -p "Enter Version (8 or 9) " version

ls *.gz | awk "{split($0,a,\"-\"); split(a[3],b,\".\"); split(a[3],c,\".tar\"); if (b[1] == \"$version\") {print c[1]}}"