【发布时间】:2016-05-07 08:40:18
【问题描述】:
我正在尝试创建以下字符串
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" 为什么不变量不起作用?
我需要稍后在脚本中使用该变量...
【问题讨论】:
-
双引号你的变量。
-
您设置了“IFS=”。所以论点(回声)在点处分裂。重置 IFS,
echo就可以了。将你的论点用双引号括起来,你会没事的。变量包含点;只是您修改了 IFS(出于某种目的)并且在该目的结束后没有恢复它——这就是让您感到悲伤的原因。 -
你为什么使用
set?只需在您当前使用$1的地方使用"$readVersion"。 -
有关未能引用变量的后果的更多血腥/可怕细节,请阅读unix.stackexchange.com/q/171346/4667
标签: string bash shell integer echo