Archiv verlassen und diese Seite im Standarddesign anzeigen : Script: Wert für $1 setzen
Hallo,
Ist es möglich, bei sh-scripts, einen Wert für $1 zu setzen?
Michi
am einfachsten über einen Parameter beim Start des Scriptes...
... oder wie meinen?
Painkiller
12.09.06, 11:58
Stell dir vor du hast:
#/bin/sh
befehl --parameter=$1
Das kannst du starten mit ./script 3 dann wird 3 als $1 gesetzt. Oder was meinst du?
Dann bleibt ja nur noch eine möglichkeit (ja die man abwandeln kann):
#!/bin/bash
1=wert
bash test
test: line 2: 1=5: command not found
~ # more test
#!/bin/bash
1=5
echo $1
[pwr@marvin][~]$ bash
pwr@marvin:~$ echo $0
bash
pwr@marvin:~$ set wert wert2
pwr@marvin:~$ echo $1
wert
pwr@marvin:~$ echo $2
wert2
pwr@marvin:~$
Steht alles in 'man bash' unter 'SHELL BUILTIN COMMANDS'.
klar - nur hat der TE immer noch nicht erzählt, was er denn nun genau will...
ein
script.sh wert1 wert2 ... setzt $1 und $2 auch...
bash test
test: line 2: 1=5: command not found
~ # more test
#!/bin/bash
1=5
echo $1
Verdammt dann geht das ja doch nicht mit den teilen. Mist :cool:
Sorry, hab mich wohl un deutlich ausgedrückt:
Das $1 beim Start des Scriptes einen Wert kriegt ist klar.
Meine Frage ist: Kan ich den im Script ändern?
Was ich damit will ist das wenn der user das script ohne Argument startet, das dan eine zenity-nachfrage kommt, deren Ausgabe-Wert dan in $1 gespeicher wird.
Hab das mit:
1 = "$(zenity ....)"
porbiert, ging aber nicht!
Noch ne Frage:
(Wie) kann ich am besten in einem Script das Script selbst bearbeiten (eine Variablen definition ändern)?
Hab das mit:
1 = "$(zenity ....)"
porbiert, ging aber nicht!
Ich hab schon weiter oben die richtige Antwort gegeben.
(Wie) kann ich am besten in einem Script das Script selbst bearbeiten (eine Variablen definition ändern)?
Da fallen mir nur Textwerkzeuge, wie sed/awk/grep/cut ein.
Kann aber sehr schnell zu Fehlern führen, wenn sich ein Script selbst bearbeitet, während es ausgeführt wird.
Der Gestreifte
12.09.06, 14:56
Meine Frage ist: Kan ich den im Script ändern?Wieso beharrst du so sehr auf dem skriptweiten arbeiten mit "$1"?
Schreib doch einfach den Wert in $1 in eine Variable, mit der Du den Rest des Skripts oder vielleicht sogar in anderen Skripten arbeitest.
(Wie) kann ich am besten in einem Script das Script selbst bearbeitenMit "sed"....
..oder wie meinen?
(eine Variablen definition ändern)?Meinst Du den Typ einer Variable (dann "typeset" oder "declare", im Grunde aber eh überflüssig) oder der Wert, der ihr zugeordnet wird (dann siehe oben).
Danke!
Mit "sed"....
..oder wie meinen?
Zitat:
(eine Variablen definition ändern)?
Meinst Du den Typ einer Variable (dann "typeset" oder "declare", im Grunde aber eh überflüssig) oder der Wert, der ihr zugeordnet wird (dann siehe oben).
Da fallen mir nur Textwerkzeuge, wie sed/awk/grep/cut ein.
Kann aber sehr schnell zu Fehlern führen, wenn sich ein Script selbst bearbeitet, während es ausgeführt wird.
Werds probieren, solange ich nur dinge bearbeite die bereits ausgeführt wurden, sollte es gehen, oder?
Werds probieren, solange ich nur dinge bearbeite die bereits ausgeführt wurden, sollte es gehen, oder?Das Script wird beim Starten in den Speicher gelesen. Die Änderungen werden erst bei einem neuen Aufruf wirksam - also nicht schon zur Laufzeit!
Das Script wird beim Starten in den Speicher gelesen. Die Änderungen werden erst bei einem neuen Aufruf wirksam - also nicht schon zur Laufzeit!
Dann sollte das aber nicht funktionieren:
#!/bin/bash
echo "aktuelles script: $0"
echo "echo 'sollte nicht zu sehen sein'" >> $0
echo "EOF"
Dann sollte das aber nicht funktionierenWTF!! ..aber man sollte nicht fluchen, wenn man was dazugelernt hat. Danke!
Nochmal eine Frage zu 'set':
Wie kann ich die Werte am einfachsten verschieben; d.h. : den Wert von $1 löschen; den Wert von $2 auf $1 kopieren; den Wert von $3 auf $2 kopieren...
Mit einer for? Oder giebt es eine einfachere Lösung?
Michi
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.