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
- apache-tomcat-8.5.78.tar.gz
- apache-tomcat-9.0.56.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]}}"
我想像这样获取 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
- apache-tomcat-8.5.78.tar.gz
- apache-tomcat-9.0.56.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]}}"