我是Shell脚本的新手,请您满足以下要求,谢谢。
$AU_NAME=AU_MSM3-3.7-00.01.02.03
#separate the string after last "-", with "." as delimiter
#that is, separate "00.01.02.03" and print/save as below.
major=00
minor=01
micro=02
build=03
首先,请注意,$
在外壳程序中分配参数时不使用。您的第一行应该是这样的:
AU_NAME=AU_MSM3-3.7-00.01.02.03
一旦有了,就可以执行以下操作:
IFS=. read major minor micro build <<EOF
${AU_NAME##*-}
EOF
其中##*-
从字符串开头到最后一个'-'剥离所有内容,仅保留“ 00.01.02.03”,而IFS(内部字段分隔符)变量告诉Shell将字符串分成多个字段的位置。
在bash,zsh和ksh93 +中,可以通过将here-document缩短为here-string来将其放在一行上:
IFS=. read major minor micro build <<<"${AU_NAME##*-}"
更一般而言,在那些相同的外壳程序(或任何其他具有数组的外壳程序)中,您可以拆分为任意大小的数组,而不是单独的变量。这适用于给定的shell:
IFS=. components=(${AU_NAME##*-})
在旧版本的ksh中,您可以执行以下操作:
IFS=. set -A components ${AU_NAME##*-}
这使您具有等效性(zsh除外,默认情况下,zsh编号元素1-4而不是0-3):
major=${components[0]}
minor=${components[1]}
micro=${components[2]}
build=${components[3]}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句