我希望能够从版本字符串中提取单个数字并将每个值分配给一个变量。
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
中的值。确保保存旧值(默认 space
、tab
、newline
)并在阅读后恢复 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/