Linux 通过bash脚本获取软件版本以卸载预装软件/通过为其分配变量轻松通知。请分享更多想法

Linux 通过bash脚本获取软件版本以卸载预装软件/通过为其分配变量轻松通知。请分享更多想法,linux,bash,variables,version,autodeploy,Linux,Bash,Variables,Version,Autodeploy,请分享更多从bash命令获取软件版本的想法,并在以后将其用作变量 su --version su (GNU coreutils) 5.97 Copyright etc. 并创建其结果的变量。 就像我在下面试过的一样 su --version >/tmp/temp.txt if [ -f /tmp/temp.txt ]; then elv=`cat /tmp/temp.txt | gawk 'BEGIN {FS="(GNU coreutils)"} {print $2}' |

请分享更多从bash命令获取软件版本的想法,并在以后将其用作变量

 su --version
su (GNU coreutils) 5.97
Copyright etc.
并创建其结果的变量。 就像我在下面试过的一样

su --version >/tmp/temp.txt

if [ -f /tmp/temp.txt ]; then
    elv=`cat /tmp/temp.txt | gawk 'BEGIN {FS="(GNU coreutils)"} {print $2}' | gawk 'BEGIN {FS="."} {print $1}'`
    #Version String. Just a shortcut to be used later
    els=el$elv
else
    echo "Unable to determine version. I can't continue"
    exit 1
fi

如果您的脚本部署在一个您还不知道可用软件版本的环境中,那么最好遵循POSIX标准,而不是尝试检测可用的版本。感谢chepher,我正计划为依赖MySQL的web应用程序创建自动部署脚本,并计划部署场景,,,,因此,如果计划部署它的人有任何预安装的mysql,那么此脚本将通知他们,或者稍后卸载它并安装所需的mysql本身。!版本依赖关系应该在运行时之前解决。只要记录下如果还没有安装MySQL x.y.z,脚本就不应该运行。我会用rpm打包你的脚本,并将MySQL的正确版本作为包依赖项。让您的脚本假设mysql的正确版本可用。没有通用的解决方案来获取命令行实用程序的版本号。它因效用的不同而不同;没有适用的标准。如果您对提取mysql客户端的版本号特别感兴趣,那么您可能应该问一个更具体的问题。
if [ `rpm -qa | egrep -c -i "^mysql-"` -gt 0 ]; then
cat << EOF

It appears that the distro-supplied version of MySQL is at least partially installed,
or a prior installation attempt failed.

Please remove these packages, as well as their dependencies (often postfix), and then
retry this script:

$(rpm -qa | egrep -i "^mysql-")

EOF
exit 1
fi