php.de

Zurück   php.de > Webentwicklung > Server, Hosting und Workstations

Server, Hosting und Workstations Server-Konfigurationsdateien (.htaccess/httpd.conf) und Arbeiten auf Serverebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.07.2006, 15:23  
Benutzer
 
Registriert seit: 04.01.2005
Beiträge: 65
noskule
Standard shell script dynamische anzal von argumenten

hallo zusammen
Ich versuch grad n shellscript zu schreiben bei dem ich 5 definitive argumente habe und danach beliebig viele (mindestens eins) "zusätzliche" variablen. Im script soll dann eine funktion soviel mal ausgeführt werden wie "zusätzliche" argumente da sind.

Das heisst, jetzt ein paket (hier "pmwiki") updaten:
Code:
updatePakete.sh ftp.server.net user pwd /data/ /public_html pmwiki
das script muss ich nun soviele male ausführen wie ich pakete updaten möchte. Gibts nun ne möglichkeit wo ich als letzte argumente einfach alle pakete angebe die ich updaten möchte, also so:
Code:
updatePakete.sh ftp.server.net user pwd /data/ /public_html pmwiki skin test extensions



updatePakete.sh
Code:
#!/bin/sh

server=$1
username=$2
password=$3

pfad_pakete=$4
pfad_installation=$5
updatePaket=$6

UploadFolder()
{
yafc open $username:$password@$server <<EOF

cd $2
put -rf $1/* 

EOF
}


UploadFolder $pfad_pakete/$updatePaket $pfad_installation
echo '    finish!'


gruss nos
noskule ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 19.07.2006, 18:08  
Erfahrener Benutzer
 
Registriert seit: 13.11.2005
Beiträge: 2.583
xabbuh
Standard

In $# steht die Anzahl der übergebenen Parameter. Mit shift und einer while-Schleife kannst du so bequem alle Parameter durchlaufen:
Code:
if [ $# -gt 5 ]; then
    i=5      #  Startposition des Schleifendurchlaufs
    shift 5  #  die ersten fünf Argumente verwerfen
    while [ $i -lt $# ]; do
        #  irgendwas mit $1 (der aktuelle Parameter) anstellen
        i=$((i + 1))
        shift    #  in den nächsten Parameter springen
    done
fi
xabbuh ist offline   Mit Zitat antworten
Alt 25.07.2006, 22:07  
Benutzer
 
Registriert seit: 04.01.2005
Beiträge: 65
noskule
Standard

xabbuh, vielen dank für den script, hat noch kleinen fehler gehabt, oder ich hab was nicht verstanden, jedenfalls funktioniert so:
Code:
if [ $# -gt 1 ]; then
        shift 1  			#  die ersten x Argumente verwerfen
        i=1				#  Startposition des Schleifendurchlaufs
        passes=$#		#  wie viele Durchgänge		

    while [ $i -le $passes ]; do
        #  irgendwas mit $1 (der aktuelle Parameter) anstellen
        echo '    Build Package: '$package
        tar -czf $path_packages/versions/netstreams-skin_$package-latest.tar.gz
        $package 
        i=$((i + 1))
        shift    		#  in den nächsten Parameter springen
    done
fi
gruss nos
noskule ist offline   Mit Zitat antworten
Alt 25.07.2006, 22:53  
Erfahrener Benutzer
 
Registriert seit: 13.11.2005
Beiträge: 2.583
xabbuh
Standard

Interessieren würde mich ja schon, wo in deinem Script du die Variable $packe hernimmst und warum du auf einmal nur das erste Argument überspringst.
xabbuh ist offline   Mit Zitat antworten
Alt 01.08.2006, 13:49  
Benutzer
 
Registriert seit: 04.01.2005
Beiträge: 65
noskule
Standard

Zitat:
Zitat von xabbuh
Interessieren würde mich ja schon, wo in deinem Script du die Variable $packe hernimmst und warum du auf einmal nur das erste Argument überspringst.
Das ist nur n teil des scripts und wegen überspringen: ich habe mehrere scripte und das hier hat nur ein fixes argument.
grz nos
noskule ist offline   Mit Zitat antworten
Alt 01.08.2006, 18:36  
Erfahrener Benutzer
 
Registriert seit: 13.11.2005
Beiträge: 2.583
xabbuh
Standard

Achso ok.
xabbuh ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Script beendet sich ohne Fehlermeldung Zahl PHP Tipps 2006 6 04.06.2006 20:41
[PHP-CLI] Variablen per Shell an ein Script übergeben PHP Tipps 2006 6 23.01.2006 11:18
[Erledigt] kurze frage zu screen in einem shell script Server, Hosting und Workstations 4 16.12.2005 21:22
[Erledigt] Verzögerung durch included Script? Umgehen? PHP Tipps 2005-2 4 10.07.2005 19:26
[Erledigt] Relay Script PHP-Fortgeschrittene 11 01.06.2005 16:02
[Erledigt] Hilfe bei Download Verwaltungs Script PHP Tipps 2005 8 04.05.2005 10:29
[Erledigt] shell script ausführen PHP-Fortgeschrittene 15 01.01.2005 21:28
shell script ausführen PHP Tipps 2004-2 0 28.12.2004 21:02
"das" Script oder "der" Script?? Simbo Off-Topic Diskussionen 31 16.09.2004 17:04
script in shell über shell_exec ausführen ... ?!?!?! PHP Tipps 2004 1 01.09.2004 14:05
suche dynamische "bookmark / favoriten" script... PHP Tipps 2004 1 04.08.2004 22:38

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
shell script argumente, shell script argument, shell script arguments, shell script shift, shell skript argumente, shell script anzahl argumente, yafc shell script, shellscript argumente, argumente shell, shell scripting mit parameter schleife durchlaufen, argumente shell script, shell script anzahl der argumente, script anzahl argumente, shell skripte argumente, shell script parameter durchlaufen, shellscript beliebige anzahl argumente, skript argumente, shell argumente, php shell scripting arguments, shellskript argumente

Alle Zeitangaben in WEZ +1. Es ist jetzt 21:43 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.