Script Bash: variables entre llaves [duplicado]
Nov 13 2020
El siguiente script de bash
#!/bin/bash
startNumber=$(( 1 )) endNumber=$(( $startNumber + 3 )) #for number in {$startNumber..$endNumber} for number in {1..4} do echo $number
done
exit 0
da la salida deseada
1
2
3
4
Sin embargo, cuando cambio el bucle for comentado y no comentado, la salida es
{1..4}
¿Qué estoy haciendo mal?
Respuestas
8 jesse_b Nov 13 2020 at 13:22
Las variables no se expandirán dentro de la expansión de llaves . Podrías hacerlo:
for ((number=startNumber; number<=endNumber; number++)); do
echo "$number"
done
Además, no hay ninguna razón para utilizar expansión aritmética para startNumbersimplemente debe hacer:
startNumber=1.
Además, no necesita usar $para expandir variables dentro de la expansión aritmética, por lo que endNumberpodría ser:endNumber=$((startNumber+3))
8 bxm Nov 13 2020 at 13:32
Como se explicó en otra parte, la expansión no funcionará. Manera alternativa de obtener su secuencia de números:
for number in $(seq $startNumber $endNumber) do echo $number
done