bash shell脚本用句点char连接字符串

时间:2016-01-29 14:57:13

标签: string bash shell integer echo

我正在尝试创建以下字符串

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",但为什么变量不起作用?

我需要稍后在脚本中使用该变量...

1 个答案:

答案 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。后者只是避免了这个问题。