Net@kii Δημοσ. 12 Ιουνίου 2009 Share Δημοσ. 12 Ιουνίου 2009 Είναι η πρωτη χρονια που κάνω linux και μπορς να πω πως με εχει δυσκολεψει. Έχω να παραδωσω μια εργασία στην οποία πρεπει να σχολιασω ένα script και δεν καταλαβαίνω τι κανει...Το μόνο πού έπιασα είναι ότι διαβάζει ASCII και τα ματατρέπει σε HTML.Το script είναι το παρακάτω: PN=`basename "$0"` # Program name VER='1.2' Usage () { echo >&2 "$PN - fmtlinks - create HTML links, $VER usage: $PN [file ...]" exit 1 } Msg () { for MsgLine do echo "$PN: $MsgLine" >&2 done } Fatal () { Msg "$@"; exit 1; } set -- `getopt h "$@"` || Usage [ $# -lt 1 ] && Usage # "getopt" detected an error while [ $# -gt 0 ] do case "$1" in # your flags here --) shift; break;; -h) Usage;; -*) Usage;; *) break;; # First file name esac shift done exec sed -e 's|\(http:[^ <>()][^ <>()]*\)|<a href="\1">\1</a>|g' \ -e 's|\(ftp:\([^ <>()][^ <>()]*\)\)|<a href="\1">\2</a>|g' \ -e 's|\(telnet:\([^ <>()][^ <>()]*\)\)|<a href="\1">\2</a>|g' \ -e 's|\(gopher:\([^ <>()][^ <>()]*\)\)|<a href="\1">\2</a>|g' \ -e 's|\(news:\([^ <>()][^ <>()]*\)\)|<a href="\1">\2</a>|g' \ -e 's|\(nntp:\([^ <>()][^ <>()]*\)\)|<a href="\1">\2</a>|g' \ -e 's|\(wais:\([^ <>()][^ <>()]*\)\)|<a href="\1">\2</a>|g' \ -e 's|\(file:\([^ <>()][^ <>()]*\)\)|<a href="\1">\2</a>|g' \ -e 's|\(prospero:\([^ <>()][^ <>()]*\)\)|<a href="\1">\2</a>|g' \ -e 's|mailto:||g' \ -e 's|\([^ @:][^ @:]*@[^ @:][^ @:]*\)|<a href="mailto:\1">\1</a>|g' \ "$@" Θα εκτιμούσα πολύ τη βοηθειά σας... Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
nske Δημοσ. 12 Ιουνίου 2009 Share Δημοσ. 12 Ιουνίου 2009 Για να καταλάβεις το script χρειάζεται να διαβάσεις: Τι κάνουν και τι παραμέτρους δέχονται οι εντολές: >basename, echo, exit, set, shift, sed, exec Πώς ορίζονται και καλούνται μεταβλητές και συναρτήσεις Πώς συντάσσονται (και τι κάνουν) οι for και οι while loops Κάποιους ειδικούς συμβολισμούς, operators και μεταβλητές, που υπάρχουν στο shell π.χ.: $1 : μεταβλητή που κρατά αυτόματα την τιμή της πρώτης παραμέτρου που δίνεται κατά την εκτέλεση από την γραμμή εντολών > : operator ανακατεύθυνσης της εξόδου &2 : έτσι συμβολίζεται ο file descriptor του stderr -gt / -lt: operators σύγκρισης (greater/less than) [*] τις έννοιες του exit status και των standard streams [*] Regular expressions Δες τις man pages των εντολών, κάνε μια αναζήτηση για παραδείγματα, πειραματίσου λίγο για να καταλάβεις τη χρήση τους και ό,τι σε δυσκολέψει εδώ είμαστε Επίσης κάποιες εξηγήσεις και χρήσιμες παραπομπές θα βρεις στα παρακάτω: http://foss.ntua.gr/wiki/index.php/Linux_Basics#Documentation http://foss.ntua.gr/wiki/index.php/Linux_Basics#.CE.97_.CE.B4.CE.BF.CE.BC.CE.AE_.CF.84.CE.BF.CF.85_Shell Hint: Όλη η ουσιαστική δουλειά γίνεται από την sed, η οποία αντικαθιστά κάποια strings με κάποια άλλα strings, τα οποία περιέχουν HTML tags. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Nycos Δημοσ. 12 Ιουνίου 2009 Share Δημοσ. 12 Ιουνίου 2009 Επισης παιξε μαζι του... πχ > oneiro:~/tst> ./txt2html.sh -h txt2html.sh - fmtlinks - create HTML links, 1.2 usage: txt2html.sh [file ...] > oneiro:~/tst> cat input.txt http://www.insomnia.gr mailto:[email protected] ftp://my.ftp.net >oneiro:~/tst> ./txt2html.sh input.txt <a href="http://www.insomnia.gr">http://www.insomnia.gr</a> <a href="mailto:[email protected]">[email protected]</a> <a href="ftp://my.ftp.net">//my.ftp.net</a> οπως βλεπεις παιρνει τα περιεχομενα του input.txt και τα μετατρεπει σε html links... (οπως λεει!!!) easy... Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Net@kii Δημοσ. 13 Ιουνίου 2009 Μέλος Share Δημοσ. 13 Ιουνίου 2009 Ευχαριστω πολυ γισ τισ διευκρινήσεις...αν χρειαστω κατι θα ξαναρωτήσω... Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Net@kii Δημοσ. 14 Ιουνίου 2009 Μέλος Share Δημοσ. 14 Ιουνίου 2009 Να'μαι παλι...λοιπον τα περισσότερα τα ξεκαθάρισα απλά δεν καταλαβαίνω τα $#, $@ και $1. Τι ακριβώς κάνουν μέσα στο script??? Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
nske Δημοσ. 14 Ιουνίου 2009 Share Δημοσ. 14 Ιουνίου 2009 http://www.gnu.org/software/bash/manual/bashref.html#Special-Parameters Δηλαδή: $#: μεταβλητή που έχει για τιμή τον αριθμό των παραμέτρων που δίνει ο χρήστης κατά την εκτέλεση του script από command line (π.χ. αν τρέξεις "./script ena 2 tre", θα έχει την τιμή "3"). $@: επίσης μεταβλητή, που έχει για τιμή όλες τις παραμέτρους με τη σειρά (π.χ. αν τρέξεις "./script ena 2 tre", θα έχει την τιμή "ena 2 tre") $1: επίσης μεταβλητή, που έχει για τιμή την πρώτη παράμετρο (π.χ. αν τρέξεις "./script ena 2 tre", θα έχει την τιμή "ena") Αυτό μπορείς να το δεις στην πράξη φτιάχνοντας ένα απλό script test.sh με περιεχόμενο: >#!/bin/sh echo $# echo $@ echo $1 $ chmod a+x test.sh $ ./test.sh ena 2 tre Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.