
No es un duplicado depregunta.
Estoy intentando crear un patrón semvar (1.0.0) a partir de una matriz que tiene 1,0,0 como elementos y crear una etiqueta git git tag $var
.
Error: - La solución anterior simplemente no funciona .
solo, está dando 1 0 0
espacios separados.
4 13 0
fatal: too many params
Error con el comando de etiqueta git.
Acercarse:-
var=$( IFS=$'.'; echo "${versionArray[*]}" )
echo $var
git tag $var
Sugiera una mejor manera de hacerlo.
Respuesta1
Supongo que el shell que se ejecuta echo $var
y git tag $var
utiliza IFS=.
también. Note var=$(IFS=.;…)
no puede cambiar el valor de la variable en el shell actual, por lo que este inesperado IFS
debe haberse configurado antes, probablemente durante algunas pruebas y errores.
Si estoy en lo cierto, la variable nombrada var
contiene el valor esperado con puntos, por ejemplo 1.0.0
. Pero cuando lo recuperas así
echo $var
la corriente IFS
se usa para dividir 1.0.0
en palabras, por lo que echo
recibe tres argumentos separados: 1
, 0
, 0
. Y debido a que echo
imprime sus argumentos con espacios simples entre ellos, tenías la impresión de que el valor de var
era 1 0 0
.
Esta línea
echo "$var"
no depende de IFS
. Espero que te lo muestre 1.0.0
.
Una solución general es poner las variables entre comillas dobles. Túdebería haberlo hecho de todos modos:
echo "$var"
git tag "$var"
También preste atención a IFS
. Ahora debería quedar claro echo $IFS
que no le mostrará cuál es la variable; echo "$IFS"
es mejor. Además estos métodos son útiles:
printf '%s' "$IFS" | hexdump -c
printf '%s' "$IFS" | hexdump -C
printf '%s' "$IFS" | xxd