Script bash - variables entre accolades [dupliquer]
Nov 13 2020
Le script bash suivant
#!/bin/bash
startNumber=$(( 1 )) endNumber=$(( $startNumber + 3 )) #for number in {$startNumber..$endNumber} for number in {1..4} do echo $number
done
exit 0
donne le rendement souhaité
1
2
3
4
Cependant, lorsque je change la boucle non commentée et commentée for, la sortie est
{1..4}
Qu'est-ce que je fais mal?
Réponses
8 jesse_b Nov 13 2020 at 13:22
Les variables ne se développeront pas dans l' expansion d'accolades . Vous pourriez faire:
for ((number=startNumber; number<=endNumber; number++)); do
echo "$number"
done
En outre, il n'y a aucune raison d'utiliser l' expansion arithmétique pour startNumbervous devez simplement faire:
startNumber=1.
De plus, vous n'avez pas besoin d'utiliser $pour développer des variables dans l'expansion arithmétique, ce endNumberpourrait être:endNumber=$((startNumber+3))
8 bxm Nov 13 2020 at 13:32
Comme expliqué ailleurs, l'extension ne fonctionnera pas. Autre façon d'obtenir votre séquence de nombres:
for number in $(seq $startNumber $endNumber) do echo $number
done