Script Bash - variáveis entre chaves [duplicado]
Nov 13 2020
O seguinte 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á a saída desejada
1
2
3
4
No entanto, quando eu troco o loop for não comentado e comentado, a saída é
{1..4}
O que estou fazendo errado?
Respostas
8 jesse_b Nov 13 2020 at 13:22
As variáveis não se expandem dentro da expansão da chave . Você poderia fazer:
for ((number=startNumber; number<=endNumber; number++)); do
echo "$number"
done
Além disso, não há nenhuma razão para usar expansão aritmética para startNumbervocê deve simplesmente fazer:
startNumber=1.
Além disso, você não precisa usar $para expandir variáveis dentro da expansão aritmética, então endNumberpoderia ser:endNumber=$((startNumber+3))
8 bxm Nov 13 2020 at 13:32
Conforme explicado em outro lugar, a expansão não funcionará. Maneira alternativa de obter sua sequência de números:
for number in $(seq $startNumber $endNumber) do echo $number
done
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
Christopher Nolan uma vez se arrependeu de ter lido o 'roteiro de Pulp Fiction' de Quentin Tarantino