gpt4 book ai didi

bash - 如何拆分版本号并将每个版本号分配给一个变量?

转载 作者:行者123 更新时间:2023-12-01 22:58:06 25 4
gpt4 key购买 nike

我希望能够从版本字符串中提取单个数字并将每个值分配给一个变量。

echo -en "Please Enter A "$RPM_FILTER" Version Number (e.g. "$VER_EXAMPLE"):"

我希望能够分配例如1 到 $a,16 到 $b 和 0 到 $c,用于 sed 过滤器。

Specify Version Number (y/n)? y
Please Enter A Version Number (e.g. 1.16.0): 1.16.0
read -p " " VERSION

我目前正在使用这个,但是当个人版本号是两位数时,这不起作用。

declare -i a=$(printf "%s\n" "$VERSION" | cut -c 1)
declare -i b=$(printf "%s\n" "$VERSION" | cut -c 3)
declare -i c=$(printf "%s\n" "$VERSION" | cut -c 5)

最佳答案

您可以简单地通过更改 IFS(内部字段分隔符)的值来分隔 VERSION 中的值。确保保存旧值(默认 spacetabnewline)并在阅读后恢复 IFS。将 IFS 的新值设置为 '.',以便在 '.' 上进行 bash 分词以供您阅读 ,例如

#!/bin/bash

printf "Please Enter A Version Number (e.g. 1.16.0): "
oldifs="$IFS"
IFS=$'.'
read a b c
IFS="$oldifs"

printf "%s %s %s\n" $a $b $c

(注意设置IFS可以作为read行的一部分来完成,这样就不必保存旧的IFS 值并在完成后恢复它,例如 IFS=$'.' read a b c)

示例使用/输出

$ bash myscript.sh
Please Enter A Version Number (e.g. 1.16.0): 1.16.0
1 16 0

关于bash - 如何拆分版本号并将每个版本号分配给一个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72505032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com