我正在尝试创建以下字符串
Beta-3.8.0
但是无论我做什么,shell脚本总是省略.
期间的字符。
echo "$readVersion"
if [ -z $readVersion ]
then
echo "readVersion is empty"
exit 1
fi;
IFS=.
set $readVersion
newVersion=$(echo "$2 + 1" | bc)
newBranch="Beta-$1.$newVersion.$3"
echo $newBranch
打印:
的 3.8.0
Beta-3 9 0
我也试过
newBranch='Beta-'$1'.'$newVersion'.'$3
or
newBranch="Beta-{$1}.{$newVersion}.{$3}"
虽然这似乎打印了正确的值echo "$1.$newVersion.$3"
,但为什么变量不起作用?
我需要稍后在脚本中使用该变量...
答案 0 :(得分:4)
完成后,您可以保存并恢复IFS
。
oldIFS=$IFS
IFS=.
set $readVersion
newVersion=$(echo "$2 + 1" | bc)
IFS=$oldIFS
newBranch="Beta-$1.$newVersion.$3"
echo "$newBranch"
或者你可以在打印时引用:
echo "$newBranch"
前者是一个更好的主意IMO,因为它传达了你的意图,并会使其余的代码使用"更正" IFS。后者只是避免了这个问题。