目前,变量被设置为类似这样的字符串:
offs3.0
我想把它分成2个变量
offs
3.0
我该怎么做?
因为我以后会用掉。
if ("$1"=="offs")
here $1 is offs3.0
答案 0 :(得分:3)
使用bash正则表达式
s=offs3.0
[[ $s =~ ^([^[:digit:]]+)(.*) ]] &&
echo "${BASH_REMATCH[1]} - ${BASH_REMATCH[2]}"
offs - 3.0
答案 1 :(得分:1)
如果您只想测试变量是否包含offs
,您可以使用:
if [[ "$1" =~ "offs" ]]
then
# do something
fi
答案 2 :(得分:0)
也可以使用单个sed来完成:
s='offs3.0'
(set -- $(sed 's/^\([a-z]*\)\(.*\)$/\1 \2/' <<< "$s") && echo "arg1=$1" "arg2=$2")
arg1=offs arg2=3.0
答案 3 :(得分:0)
或者只使用shell的内置参数替换。
var='offs3.0'
echo "${var%%[.0-9]*}"
echo "${var##*[A-Za-z]}"