
重複ではありません質問。
1,0,0 を要素として持つ配列から semvar パターン (1.0.0) を作成し、git タグを作成しようとしていますgit tag $var
。
エラー:- 上記の解決策は.
、 のみでは機能しません1 0 0
。スペースで区切られた が返されます。
4 13 0
fatal: too many params
git tag コマンドでエラーが発生しました。
アプローチ:-
var=$( IFS=$'.'; echo "${versionArray[*]}" )
echo $var
git tag $var
もっと良い方法を提案してください。
答え1
echo $var
私の推測では、実行してgit tag $var
使用するシェルIFS=.
も同様です。var=$(IFS=.;…)
現在のシェルでは変数値を変更できないため、この予期しない設定はIFS
、おそらく試行錯誤中に以前に設定されたはずです。
私の推測が正しければ、変数 にはvar
ドット付きの期待値が格納されます1.0.0
。ただし、次のように取得すると
echo $var
現在の は単語にIFS
分割するために使用されているため、 、、の 3 つの別々の引数を受け取ります。また、 は引数を 1 つのスペースで区切って出力するので、の値は であると誤解していました。1.0.0
echo
1
0
0
echo
var
1 0 0
この行
echo "$var"
は に依存しませんIFS
。 が表示されることを期待しています1.0.0
。
一般的な解決策は、変数を二重引用符で囲むことです。いずれにせよそうすべきだった:
echo "$var"
git tag "$var"
また、 にも注意してください。これで、 では変数が何であるかは表示されず、 の方が優れているIFS
ことが明らかになったはずです。さらに、次のメソッドも便利です。echo $IFS
echo "$IFS"
printf '%s' "$IFS" | hexdump -c
printf '%s' "$IFS" | hexdump -C
printf '%s' "$IFS" | xxd