2017-02-08 2 views
1

Ich habe Benutzer, die Dateien auf ausgewählte Drucker drucken. Anstatt eine Funktion für jeden Drucker zu erstellen, möchte ich nur eine haben und die Dateien zum Drucken und den gewünschten Drucker übergeben. Der folgende Code funktioniert natürlich nicht. Kann mir jemand auf die richtige Lösung hinweisen?UNIX: Übergabe von Argumenten an eine Shell-Funktion

list2=`ls /spooldocs/sch/sch* |sort` 
Print $list2 $printer2 

Print(){ 
    for job in $1 ; do 
    if [[ $job == *503374*.pcl ]]; then 
     lp -d$2 $job 
     lp -d$2 $job 
    fi 
    lp -d$2 $job 
    lp -d$2 $job 
    lp -d$2 $job 
    lp -d$2 $job 
    done 
} 
+1

Sie müssen Shell-Funktionen definieren * vor * Sie sie verwenden. – Jens

Antwort

0

können Sie shift verwenden, um Positionsargumente nach links zu bewegen. Sie können mit for var; do ... ; done über die Positionsargumente iterieren:

#!/bin/sh 

Print() { 
    printer=$1 
    shift 
    for job; do 
    echo lp "-d$printer" "$job" 
    done 
} 

Print laserjet foo bar baz 

Probelauf:

$ ./x.sh 
lp -dlaserjet foo 
lp -dlaserjet bar 
lp -dlaserjet baz 
+0

Ich fand auch, dass einfach Print "$ list2" $ printer2 aufrufen funktioniert (hinzugefügt "") – emare

Verwandte Themen