Πώς μπορώ να κάνω επανάληψη σε ένα εύρος αριθμών που ορίζονται από μεταβλητές στο Bash;

Πώς μπορώ να κάνω επανάληψη σε ένα εύρος αριθμών στο Bash όταν το εύρος δίνεται από μια μεταβλητή;

Ξέρω ότι μπορώ να το κάνω αυτό (ονομάζεται "sequence expression" στο documentation του Bash):

 for i in {1..5}; do echo $i; done

Το οποίο δίνει:

1 <br/&gt, 2 <br/&gt, 3 <br/&gt, 4 <br/&gt, 5

Ωστόσο, πώς μπορώ να αντικαταστήσω ένα από τα δύο τελικά σημεία του εύρους με μια μεταβλητή; Αυτό δεν λειτουργεί:

END=5
for i in {1..$END}; do echo $i; done

Το οποίο εκτυπώνει:

{1..5}

Λύση

Μπορείτε να χρησιμοποιήσετε

for i in $(seq $END); do echo $i; done
Σχόλια (8)

Αυτό λειτουργεί μια χαρά στο bash:

END=5
i=1 ; while [[ $i -le $END ]] ; do
    echo $i
    ((i = i + 1))
done
Σχόλια (7)