不是问题的重复。
我正在尝试从具有 1,0,0 作为元素的数组制作 semvar pattern (1.0.0) 并创建一个 git tag git tag $var
。
错误:- 上述解决方案仅不适用于.
,它给出1 0 0
,空格分隔。
4 13 0
fatal: too many params
git 标记命令出错。
方法:-
var=$( IFS=$'.'; echo "${versionArray[*]}" )
echo $var
git tag $var
请提出一个更好的方法来做到这一点。
我的猜测是执行
echo $var
和git tag $var
使用的 shellIFS=.
。注意var=$(IFS=.;…)
无法更改当前 shell 中的变量值,所以这个意外的IFS
必须是较早设置的,可能是在一些试验和错误中。如果我是对的,命名的变量
var
保存带点的预期值,例如1.0.0
。但是当你像这样取回它时当前
IFS
用于拆分1.0.0
成单词,因此echo
接收三个单独的参数:1
,0
,0
。并且因为echo
打印它的参数之间有单个空格,所以你的印象是var
was的值1 0 0
。这条线
不依赖
IFS
。我希望它会告诉你1.0.0
。一个通用的解决方案是双引号变量。无论如何你应该这样做:
还要注意
IFS
。现在应该很清楚echo $IFS
不会告诉你变量是什么;echo "$IFS"
更好。此外,这些方法很有用: