写一个shell,找出/home/admin/下匹配一个最大版本的目录,比如version=3.0.14,/home/admin/下有目录为app_3.0.14,app_3.0.14.2 , 输出/home/admin/app_3.0.14.2
时间: 2023-08-16 18:06:31 浏览: 52
可以尝试以下脚本:
```shell
#!/bin/bash
max_version=""
for dir in /home/admin/app_*; do
if [[ -d $dir ]]; then
version=$(echo "$dir" | awk -F "_" '{print $2}')
if [[ "$version" > "$max_version" ]]; then
max_version=$version
max_dir=$dir
fi
fi
done
echo "$max_dir"
```
这个脚本会遍历 `/home/admin/` 目录下所有以 `app_` 开头的目录,然后通过 `awk` 命令提取目录名中的版本号,并和当前最大版本号比较。如果找到比当前最大版本号更大的版本号,就更新最大版本号和对应的目录路径。最后输出最大版本号所对应的目录路径。
注意,这个脚本只能处理版本号形如 `x.y.z` 的情况,如果版本号不是这种格式,可能需要调整 `awk` 命令的参数。
相关问题
写一个shell, 比较两个版本字符串的大小, 比如, 输入3.0.14, 3.0.14.8, 输出3,0.14.8
好的,下面是一个比较两个版本字符串大小的shell脚本:
```bash
#!/bin/bash
ver1=$1
ver2=$2
# 将版本字符串按照.分割为数组
ver1_array=(${ver1//./ })
ver2_array=(${ver2//./ })
# 取出版本号的长度(即.的个数)
len1=${#ver1_array[@]}
len2=${#ver2_array[@]}
# 比较版本号
i=0
while [[ $i -lt $len1 && $i -lt $len2 ]]
do
if [[ ${ver1_array[$i]} -lt ${ver2_array[$i]} ]]
then
echo $ver2
exit
elif [[ ${ver1_array[$i]} -gt ${ver2_array[$i]} ]]
then
echo $ver1
exit
fi
i=$(($i+1))
done
# 如果两个版本号前面的部分相同,则比较长度
if [[ $len1 -lt $len2 ]]
then
echo $ver2
elif [[ $len1 -gt $len2 ]]
then
echo $ver1
else
echo "两个版本号相同"
fi
```
这个脚本首先将输入的版本字符串按照.进行分割,然后逐一比较每个部分的大小,直到发现不同为止。如果前面的部分都相同,那么比较版本号的长度,长度短的版本号较小。
使用awk再写一个
除了使用`cut`命令以外,我们还可以使用`awk`来实现这个功能。下面是一个示例脚本:
```shell
#!/bin/bash
str="3.0.14.9"
result=$(echo "$str" | awk -F '.' '{print $1"."$2"."$3}')
echo "$result"
```
这个脚本首先将输入的字符串赋值给`str`变量,然后使用`awk`命令按`.`作为分隔符,提取前三个字段,并使用`.`将它们连接起来。输出结果为`3.0.14`。
在`awk`命令中,`-F '.'`选项指定了`.`作为分隔符。`'{print $1"."$2"."$3}'`部分则指定了输出的格式,即将前三个字段用`.`连接起来。
相关推荐
![gz](https://img-home.csdnimg.cn/images/20210720083447.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)