![]() |
|
|
|
#1 |
|
Parasprite
|
Das Wiki hat inzwischen ein Shell-Scripting HowTo. Ich würde mich freuen, wenn sich der Eine oder Andere das mal ansieht und Hinweis gibt, wo ich mehr in die Tiefe gehen sollte und wo Dinge noch unklar sind.
Ich wollte mich irgendwann noch in NetCat einarbeiten, das würde ich dann auch noch dazu basteln.
__________________
[ bsdlogo 2.0 - Wiki - Ports - LibreOffice Pakete - PM schreiben - kamikaze@bsdforen.de ]
Disclaimer: My posts represent my perception. Errors and incompleteness are to be expected, I deny any responsibility to know everything. |
|
|
|
|
|
#2 |
|
ist immer auf der flucht
Registrierungsdatum: Jun 2004
Beiträge: 2.835
|
Grandios, Dankeschön!
|
|
|
|
|
|
#3 |
|
Registered User
Registrierungsdatum: Jan 2006
Beiträge: 431
|
Gute Idee!
Kleine Anmerkungen: 1.) In printf-Formatstrings ist '\r' der Wagenrücklauf, '\c' hingegen verwirft den Rest des Strings. 2.) Vielleicht erwähnen, dass '$(...)' geschachtelt werden kann, Backticks jedoch nicht.
__________________
»I invented the term Object-Oriented, and I can tell you I did not have C++ in mind.« »[Lisp is] the greatest single programming language ever designed.« — Alan Kay
|
|
|
|
|
|
#4 |
|
Parasprite
|
@danlei
Das mit \c war ein Fehler, ich habe \r gemeint. Vielen dank, ich baue jetzt beides noch ein.
__________________
[ bsdlogo 2.0 - Wiki - Ports - LibreOffice Pakete - PM schreiben - kamikaze@bsdforen.de ]
Disclaimer: My posts represent my perception. Errors and incompleteness are to be expected, I deny any responsibility to know everything. |
|
|
|
|
|
#5 | |
|
aka uqs
Registrierungsdatum: Feb 2003
Beiträge: 2.024
|
Gute Arbeit erstmal, ich denke aber, viele Beispiele sind fuer Einsteiger etwas komplex
![]() Bei der Redirection wuerde ich anmerken, dass auch folgende Syntax tut (das verwundert den ein oder anderen beim Lesen) Code:
Dann wuerde ich anstelle von expr(1) lieber direkte Shellarithmetik mittels $(( $i + 1 )) verwenden (ist IMHO lesbarer). Wer richtig was Rechnen will, sollte sich dc(1) und bc(1) ansehen. Ein Beispiel verwendet "sed foo | sed bar", dass kann man "besser" lösen mit "sed -e foo -e bar" oder gar "sed -e 'foo; bar'". Bei den Schleifen koennte man vielleicht noch erwaehnen, dass ohne Angabe einer expliziten Liste die postionalen Parameter verwendet werden: Code:
Code:
Zitat:
Du solltest auch den -E Parameter fuer sed(1) nur dann verwenden, wenn du ihn brauchst. So machst du naemlich alle Beispiele unportable (-E ist IIRC nicht in POSIX). Code:
Es fehlt auch noch ein Abschnitt ueber das "case" Statement und du solltest die sehr gute sh(1) manpage oefter referenzieren (zB die Liste unter 2.1, da solltest du auf http://www.freebsd.org/cgi/man.cgi?query=sh verlinken). |
|
|
|
|
|
|
#6 |
|
Parasprite
|
Danke für die Hinweise, ich pflege das demnächst ein. Die Shell-Arithmetik ist mir neu. Ich wusste nicht, dass das geht.
__________________
[ bsdlogo 2.0 - Wiki - Ports - LibreOffice Pakete - PM schreiben - kamikaze@bsdforen.de ]
Disclaimer: My posts represent my perception. Errors and incompleteness are to be expected, I deny any responsibility to know everything. |
|
|
|
|
|
#7 |
|
Registered User
Registrierungsdatum: Feb 2008
Beiträge: 33
|
Als Shell-Newbie mal ne kleine Frage:
Könntest du vielleicht noch (unter Pipes, oder so) erklären, was & und && bedeuten? Ich hab noch nichts gefunden, wo das genau erklärt wird und hab da nämlich nur gefährliches Halbwissen. ![]() && = besagt das ein Befehl nur ausgeführt wird, wenn der vorige erfolgreich ausgeführt wurde ? & = ? |
|
|
|
|
|
#8 | |
|
Parasprite
|
Zitat:
Das führt den Befehl im Hintergrund aus. Beides hat nichts mit Pipes zu tun und wird deshalb auch nicht dort erklärt. Das & wird im Abschnitt Prozesse forken erklärt (da fehlt noch ein einfaches Beispiel). || und && gehören in den Bereich Programmfluss (if-then-else-Kram). Den habe ich schlichtweg vergessen. Deshalb, danke für den Hinweis! ![]()
__________________
[ bsdlogo 2.0 - Wiki - Ports - LibreOffice Pakete - PM schreiben - kamikaze@bsdforen.de ]
Disclaimer: My posts represent my perception. Errors and incompleteness are to be expected, I deny any responsibility to know everything. |
|
|
|
|
|
|
#9 | |
|
Parasprite
|
Zitat:
Mir ist es auch nicht gelungen IFS auf \0 zu setzen: Code:
Code:
__________________
[ bsdlogo 2.0 - Wiki - Ports - LibreOffice Pakete - PM schreiben - kamikaze@bsdforen.de ]
Disclaimer: My posts represent my perception. Errors and incompleteness are to be expected, I deny any responsibility to know everything. |
|
|
|
|
|
|
#10 | |
|
aka uqs
Registrierungsdatum: Feb 2003
Beiträge: 2.024
|
Zitat:
Code:
|
|
|
|
|
|
|
#11 |
|
Parasprite
|
Das habe ich auch versucht, aber da kommen 3 Dateien raus, nicht eine mit Newlines drin.
__________________
[ bsdlogo 2.0 - Wiki - Ports - LibreOffice Pakete - PM schreiben - kamikaze@bsdforen.de ]
Disclaimer: My posts represent my perception. Errors and incompleteness are to be expected, I deny any responsibility to know everything. |
|
|
|
|
|
#12 |
|
Lion King Fan
Registrierungsdatum: May 2004
Ort: Pride Rock
Beiträge: 1.330
|
Muss es nicht
$ touch "`printf "Bla \n Blubb"`" heißen? Also in " ". Sonst bekommt man ja nur einzelne Dateien. Ich frage mich dann aber, ob er auch eine Datei, die nur ein newline char enthält anlegen kann? Mal ausprobieren. ^^
__________________
HP: Simba - The Lion King |
|
|
|
|
|
#13 |
|
Parasprite
|
Mit
$ touch "`printf "Bla \n Blubb"`" schließt sich mein Terminal. Es werden auch keine Dateien angelegt. Mit $ touch "`printf "Bla\nBlubb"`" erhalte ich die Datei "BlanBlubb". Mit $ touch "`printf 'Bla \n Blubb'`" erhalte ich die Dateien "Bla " und " Blubb". Ich kann mir einfach nicht vorstellen, dass es Dateien mit Newlines gibt.
__________________
[ bsdlogo 2.0 - Wiki - Ports - LibreOffice Pakete - PM schreiben - kamikaze@bsdforen.de ]
Disclaimer: My posts represent my perception. Errors and incompleteness are to be expected, I deny any responsibility to know everything. |
|
|
|
|
|
#14 |
|
Lion King Fan
Registrierungsdatum: May 2004
Ort: Pride Rock
Beiträge: 1.330
|
Mh komisch. Bei mir funktioniert das:
s-tlk /tmp > touch "`printf "BLA\nBLUBB"`" s-tlk /tmp > ls BLA* BLA?BLUBB s-tlk /tmp > vi BLA' 'BLUBB Wenn ich hier ein BLA<tab> mache, macht er mir ein newline. Ich benutze die zsh als Shell mit der es geht. Aber mit der tcsh zb nicht. Sehr merkwürdig... Mit der sh geht es zb. Versuch das mal. Vllt kommt man so dem auf den Grunde
__________________
HP: Simba - The Lion King Geändert von s-tlk (11.03.2008 um 10:11 Uhr). Grund: Ergänzung... |
|
|
|
|
|
#15 |
|
Registered User
Registrierungsdatum: Apr 2004
Beiträge: 267
|
Bourne Shell-Derivate:
touch 'bla[EINGABETASTE]blub' C-Shell-Derivate: touch 'bla\[EINGABETASTE]blub' |
|
|
|
![]() |
| Dieses Thema betrachten zurzeit 1 Personen. (0 registrierte Benutzer und 1 Gäste) | |
| Themen-Optionen | |
| Ansicht | Thema bewerten |
|
|
Ähnliche Themen
|
||||
| Thema | Erstellt von | Forum | Antworten | Letzter Beitrag |
| Postfix dspam HowTo / Erneuern | BeNeDeLux | Howtos | 0 | 27.12.2006 12:42 |
| FreeBSD Samba PDC Howto | Highfish | Howtos | 103 | 25.09.2006 21:14 |
| Procmail / no valid shell | testit | FreeBSD - Anwendungen und Ports | 2 | 06.04.2006 20:48 |
| Allgemeine Fragen & HowTo | lill_phönix | OpenBSD - Installation | 13 | 26.08.2004 11:59 |
| suche: shell script howto | qfat | Programmieren | 12 | 07.07.2004 01:38 |