Πώς μπορώ να κάνω επανάληψη σε ένα εύρος αριθμών στο Bash όταν το εύρος δίνεται από μια μεταβλητή;
Ξέρω ότι μπορώ να το κάνω αυτό (ονομάζεται "sequence expression" στο documentation του Bash):
for i in {1..5}; do echo $i; done
Το οποίο δίνει:
1 <br/>, 2 <br/>, 3 <br/>, 4 <br/>, 5
Ωστόσο, πώς μπορώ να αντικαταστήσω ένα από τα δύο τελικά σημεία του εύρους με μια μεταβλητή; Αυτό δεν λειτουργεί:
END=5
for i in {1..$END}; do echo $i; done
Το οποίο εκτυπώνει:
{1..5}
for i in $(seq 1 $END); do echo $i; done
edit: Προτιμώ το seq
από τις άλλες μεθόδους γιατί μπορώ πραγματικά να το θυμάμαι ;)Μπορείτε να χρησιμοποιήσετε
for i in $(seq $END); do echo $i; done
Αυτό λειτουργεί μια χαρά στο bash
:
END=5
i=1 ; while [[ $i -le $END ]] ; do
echo $i
((i = i + 1))
done