Shell Scripting – Μέρος 6ο – Συναρτήσεις και Επεξεργασία αρχείων

Στο παρόν άρθρο θα δούμε τη χρησιμότητα των συναρτήσεων καθώς και πως αυτές αποτελούν καλή πρακτική στον προγραμματισμό γενικότερα. Επίσης θα δούμε πως γράφουμε ή διαβάζουμε αρχεία μέσα στο shell script μας κάτι που είναι χρήσιμο όταν θέλουμε να αποθηκεύονται τυχόν αποτελέσματα από την εκτέλεση κάποιας συνάρτησης.

Στο προηγούμενο άρθρο, αναφερθήκαμε στα options και στα cases, τα οποία είναι χρήσιμα για τη δημιουργία ενός προγράμματος χωρίς να μπλέκουμε με πολλά if then else. Με λίγα λογία αν θέλουμε εξ αρχής να δίνουμε επιλογές στο χρήστη αυτό γίνεται πολύ εύκολα με τη χρήση των cases. Μια επιπλέον μέθοδος όπως θα δούμε είναι η ομαδοποίηση του κώδικά μας σε συναρτήσεις (functions).

Είναι γνωστή καλή πρακτική στον προγραμματισμό να επαναχρησιμοποιύμε κωδικά, κοινώς να μη γράφουμε συνεχεία τα ίδια blockς αν πρόκειται να τα ξαναχρησιμοποιήσουμε. Εδώ έρχονται οι συναρτήσεις να μας βγάλουν από αυτό το πρόβλημα

Βασική μορφή συνάρτησης

#!/bin/bash

# Βασική μορφή συνάρτησης

print_something () {
echo "Είμαι ένα echo μέσα σε συνάρτηση"
}
# Εδώ κάτω ζητάω να εκτελεστεί το περιεχόμενο της συνάρτησης
print_something

Κάπως έτσι δομείται μια συνάρτηση, η πιο απλή που μπορεί να οριστεί.

Χρήση ορίσματος σε συνάρτηση

Τα blocks κώδικα μέσα στις συναρτήσεις μπορούν να δέχονται εξωτερικά ορίσματα όπως φαίνεται στο ακόλουθο παράδειγμα

#!/bin/bash

# Χρήση ορίσματος σε συνάρτηση

print_something () {
echo "Καλησπέρα $1"
}

print_something Μάκη
print_something Βυργουνδία

φυσικά υπάρχουν και άλλες μορφές όπως αυτή του ακόλουθου κώδικα.

#!/bin/bash

# Χρήση ορίσματος σε συνάρτηση και επιστροφή ενός αριθμού

print_something () {
echo "Καλησπέρα $1"
return 5
}

print_something Μάκη
print_something Βυργουνδία

echo "Η συνάρτηση επέστρεψε τον αριθμό $?"

που στην περίπτωση αυτή, έχουμε επιπλέον τη χρήση της return η οποία επιστρέφει έναν αριθμό ή το αποτέλεσμα μιας εντολής η πράξης που θα εκτελέσουμε εντός της συναρτήσεως.

Ανάγνωση και εγγραφή αρχείου στο Bash

Ανάγνωση αρχείου

Δεν είναι λίγες οι φορές που χρειάστηκε να δούμε τα περιεχόμενα ενός αρχείου. Αυτό πραγματοποιείται πανεύκολα με τη χρήση της cat

cat όνομα_αρχείου.txt

Ωστόσο υπάρχουν περιπτώσεις που στα πλαίσια ενός script επιζητούμε περισσότερο έλεγχο πάνω στην ανάγνωση ενός αρχείου.

#!/bin/bash
filename='brands.txt'
n=1
while read line; do
# Ανάγνωση κάθε γραμμής
echo "Αριθμός γραμμής $n : $line"
n=$((n+1))
done < $filename

Tο ανωτέρω script παίρνει τα περιεχόμενα του brands.txt γραμμή γραμμή και τα εκτυπώνει προσθέτοντας μπροστά το «Αριθμός γραμμής » και το νούμερο της γραμμής ακολουθούμενο από το περιεχόμενο της κάθε γραμμής.

Μια πιο απλή παραλλαγή του προηγούμενου κώδικα είναι η ακόλουθη

#!/bin/bash
while read -r line; do
# Reading each line
echo $line
done < $1

όπου θα εκτυπώσει τα περιεχόμενα του αρχείου που θα του δώσουμε, γραμμή γραμμή.

Εγγραφή αρχείου

Η εντολή εγγραφής στην απλούστερη εκδοχή της είναι η ακόλουθη

echo "Κάτι" > όνομα_αρχείου.txt

Όπου γράφουμε στην πρώτη γραμμή του ονόματος του αρχείου τη λέξη κάτι. Εδώ όμως υπάρχει μια μικρή λεπτομέρεια που κάνει όμως τη διαφορά:

  1. Αν το όνομα αρχείου δεν υπάρχει, θα δημιουργηθεί,
  2. αν όμως υπάρχει θα διαγραφούν τα περιεχόμενα του και θα γραφεί μόνο η λέξη κάτι στην πρώτη γραμμή αυτού.

Πως ξεπερνάμε αυτό το εμπόδιο;

Πολύ απλά με μια μικρή τροποποίηση της προηγούμενης εντολής.

echo "Κάτι άλλο" >> όνομα_αρχείου.txt

Σε αυτή την περίπτωση, θα γραφεί στην πρώτη κενή γραμμή, δηλαδή αμέσως μετά την τελευταία γραμμένη γραμμή.

Τι μάθαμε;

Στο παρόν μάθημα μάθαμε πως να επαναχρησιμοποιούμε τον κώδικα μας με τη χρήση συναρτήσεων καθώς και πως να διαχειριζόμαστε την εγγραφή και την ανάγνωση αρχείων. Πλέον είμαστε σε θέση να γράψουμε σύνθετα προγράμματα που να διαβάζουν και να αποθηκεύουν σε αρχεία και να δέχονται εισαγωγή δεδομένων από το χρήστη.

Όπως πάντα τον κώδικα του σημερινού αλλά και των προηγούμενων άρθρων θα τον βρείτε στο github του Cerebrux στην κατηγορία Bash-Lessons. Όλα τα νέα αλλά και παλιότερα μαθήματα θα τα βρείτε στο λήμμα «μαθήματα shell scripting«

Advertisements

2 σκέψεις σχετικά με το “Shell Scripting – Μέρος 6ο – Συναρτήσεις και Επεξεργασία αρχείων

  1. Πολύ καλό άρθρο και γενικά όλη αυτή η σειρά… Το shell είναι ένα πολύ δυνατό εργαλείο αλλά δυστυχώς οι περισσότεροι γνωρίζουμε πολύ λίγα γι’αυτό. Ευχαριστώ!

Σου άρεσε το άρθρο; Πες την άποψή σου... έστω και Ανώνυμα:

Εισάγετε τα παρακάτω στοιχεία ή επιλέξτε ένα εικονίδιο για να συνδεθείτε:

Λογότυπο WordPress.com

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό WordPress.com. Αποσύνδεση /  Αλλαγή )

Φωτογραφία Google

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Google. Αποσύνδεση /  Αλλαγή )

Φωτογραφία Twitter

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Twitter. Αποσύνδεση /  Αλλαγή )

Φωτογραφία Facebook

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Facebook. Αποσύνδεση /  Αλλαγή )

Σύνδεση με %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.