Δημοσιεύτηκε: 27 Νοέμ 2011, 19:29
jennie έγραψε:Ευχαριστώ, αλλά για να το θέσω λίγο θεωρητικά:
- Κώδικας: Επιλογή όλων
find -name "*.bak" | while read i; do ΕΝΤΟΛΗ1; done
find -name "*.bak" | while read i; do ΕΝΤΟΛΗ2; done
Ο παραπάνω κώδικας βρίσκει όλα τα αρχεία με επέκταση .bak και εκτελεί την ΕΝΤΟΛΗ1. Μετά, ξαναβρίσκει όλα τα αρχεία .bak και εκτελεί την εντολή2.
Μπορώ να γράψω κώδικα που να βρίσκει όλα τα αρχεία με επέκταση .bak, να εκτελεί την εντολή1 και μετά να εκτελεί την εντολή2 στο αποτέλεσμα;
Ναι, μπορείς να γράψεις ως
- Κώδικας: Επιλογή όλων
#!/bin/bash
for i in $( find -name "*.bak" ); do
ΕΝΤΟΛΗ1
ΕΝΤΟΛΗ2
done
Εδώ εκτελούμε ενα βρόχο for(), όπου έχει ως ορίσματα το αποτέλεσμα της εντολής find. Κάθε φορά που τρέχει ο βρόχος, το $i εμπεριέχει ένα όνομα αρχείου από τα *.bak.
Οι εντολές ΕΝΤΟΛΗ1, ΕΝΤΟΛΗ2, κτλ έχουν πρόσβαση στο όνομα του αρχείου μέσω της μεταβλητής $i.
Δες περισσότερα για βρόχους (loops) στο
http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-7.html