Περισσότερα
Πώς να επαναλαμβάνετε τα ορίσματα σε μια δέσμη ενεργειών Bash
Έχω μια σύνθετη εντολή που θα ήθελα να κάνω ένα shell/bash script. Μπορώ εύκολα να τη γράψω με όρους $1
:
foo $1 args -o $1.ext
Θέλω να μπορώ να περάσω πολλαπλά ονόματα εισόδου στο σενάριο. Ποιος είναι ο σωστός τρόπος για να το κάνω;
Και, φυσικά, θέλω να χειρίζομαι ονόματα αρχείων με κενά μέσα σε αυτά.
830
3
Χρησιμοποιήστε
"$@"
για να αναπαραστήσετε όλα τα ορίσματα:Αυτό θα επαναλάβει κάθε όρισμα και θα το εκτυπώσει σε ξεχωριστή γραμμή. Το $@ συμπεριφέρεται όπως το $* με τη διαφορά ότι όταν παρατίθεται σε εισαγωγικά τα ορίσματα χωρίζονται σωστά αν υπάρχουν κενά σε αυτά:
Επαναδιατύπωση μιας διαγραμμένης πλέον απάντησης από τον VonC.
Σημειώστε ότι η απάντηση του Robert'είναι σωστή και λειτουργεί και στην
sh
. Μπορείτε να το απλοποιήσετε (φορητά) ακόμη περισσότερο:είναι ισοδύναμο με:
Δηλαδή, δεν χρειάζεστε τίποτα!
Δοκιμή (
$
είναι η γραμμή εντολών):Πρώτη φορά διάβασα γι' αυτό στο Προγραμματιστικό Περιβάλλον του Unix των Kernighan και Pike.
Στο
bash
, ηhelp for
το τεκμηριώνει αυτό: