Script Bash - variabili tra parentesi graffe [duplicato]
Nov 13 2020
Il seguente script bash
#!/bin/bash
startNumber=$(( 1 )) endNumber=$(( $startNumber + 3 )) #for number in {$startNumber..$endNumber} for number in {1..4} do echo $number
done
exit 0
dà l'output desiderato
1
2
3
4
Tuttavia, quando cambio il ciclo non commentato e commentato, l'output è
{1..4}
Che cosa sto facendo di sbagliato?
Risposte
8 jesse_b Nov 13 2020 at 13:22
Le variabili non si espandono all'interno dell'espansione delle parentesi graffe . Potresti fare:
for ((number=startNumber; number<=endNumber; number++)); do
echo "$number"
done
Inoltre, non v'è alcuna ragione per usare espansione aritmetica per startNumbersi dovrebbe fare semplicemente:
startNumber=1.
Inoltre, non è necessario utilizzare $per espandere le variabili all'interno dell'espansione aritmetica, quindi endNumberpotrebbe essere:endNumber=$((startNumber+3))
8 bxm Nov 13 2020 at 13:32
Come spiegato altrove, l'espansione non funzionerà. Modo alternativo per ottenere la sequenza di numeri:
for number in $(seq $startNumber $endNumber) do echo $number
done