我需要编写一个脚本来为我下载 apache、mariadb、python 和 php 版本。只有数字。我不是指通常的命令,例如:php --version
我希望它像这样显示在屏幕上(echo 命令):
Apache 2.4.52
MariaDB: 10.6.xx
PHP: 8.1.2
Python: 3.10.4
怎么写?
答案1
您应该通过将消息放入不同的文本处理命令中来自行解析版本号并以自己的方式获取版本(没有通用方法)。
例如:
python3 --version | sed 's/Python //g' # python
bash --version | head -1 | tr ' ' '\n' | grep 'version' -A1 | grep -v 'version' # bash
如您所见,获取版本的方式实际上取决于程序的输出。以下是一些提示:
- 使用不同的文本处理器,如
grep
、sed
或。tr
head
- 用于
grep
grapping 行 - 用于
sed
去除图案 - 要匹配行中的单词,请使用
tr
将每个单词转换为一行,然后grep
- 使用
head
已知行来定位版本 - 浏览不同的手册页以了解命令选项
- 如果不起作用,请耐心调试
希望我的解决方案能够满足您的要求。祝您好运!
答案2
正则表达式/([0-9]+\.[0-9]+\.?[0-9]*)/g
将匹配以下任意一项:
2.3
2.7.15
3.7.0
使用 bash 脚本来迭代 --version 的输出:
#!/bin/bash
declare -a arr=("python3" "gedit" "vim.tiny")
for (( i = 0; i < ${#arr[@]} ; i++));
do
comm=$(${arr[$i]} --version)
[[ $comm =~ ([0-9]+\.[0-9]+\.?[0-9]*) ]] && echo "${arr[$i]} : $BASH_REMATCH"
done
输出:
user@Computer:~$ Desktop/script.sh
python3 : 3.10.4
gedit : 41.0
vim.tiny : 8.2
只需将列出的程序更改为您想要显示的程序即可。