(gelöst) Frage zu ls und sed

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
JaKlaRo
Beiträge: 121
Registriert: 06.03.2008 15:00:00
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

(gelöst) Frage zu ls und sed

Beitrag von JaKlaRo » 14.06.2009 08:57:41

Hallo,
ich habe in einem Thread gelesen, dass es schlechter Programmierstil ist, ls in Skripten zu verwenden. Andererseits wird in Einführungen in die Skript-Programmierung, z.B. aps-guide, dies nicht beherzigt. Was ist nun richtig.
Damit dies klar ist, es geht mir bei dieser Frage um guten Programmierstil. Ich kann mit und ohne ls meine Skripte schreiben. Und wenn wir schon dabei sind, welche Befehle sind sonst noch tabu, mir fällt da spontan cd ein, benutze ich nicht mehr.
Nun zur zweiten Frage:
Wie kann ich sed Variablen übergeben? Ein Beispiel:

Code: Alles auswählen

1. sed -n `2p` Datei
2. sed -n `$test` Datei
Die erste Zeile funktioniert, die zweite nicht, wie mache ich das richtig?? Habe nichts dazu gefunden.

Gruß und Danke
JaKlaRo
Zuletzt geändert von JaKlaRo am 14.06.2009 19:07:30, insgesamt 1-mal geändert.

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Frage zu ls und sed

Beitrag von Meillo » 14.06.2009 09:58:30

JaKlaRo hat geschrieben:ich habe in einem Thread gelesen, dass es schlechter Programmierstil ist, ls in Skripten zu verwenden.
Davon habe ich nie gehört.
Damit dies klar ist, es geht mir bei dieser Frage um guten Programmierstil. Ich kann mit und ohne ls meine Skripte schreiben. Und wenn wir schon dabei sind, welche Befehle sind sonst noch tabu, mir fällt da spontan cd ein, benutze ich nicht mehr.
Aus welchem Grund ist `cd' in Shellscripten schlecht? (Zudem wird es je nach verwendeten Befehlen auch zwangsläufig nötig sein.)

Ich verwende beides nach Bedarf. Bisher habe ich nie Argumente dagegen gehört, deshalb bin ich gespannt was du anführen kannst.

Nun zur zweiten Frage:
Wie kann ich sed Variablen übergeben? Ein Beispiel:

Code: Alles auswählen

1. sed -n `2p` Datei
2. sed -n `$test` Datei
Die erste Zeile funktioniert, die zweite nicht, wie mache ich das richtig?? Habe nichts dazu gefunden.
Zu allererst einmal wolltest du sicher keine Backticks sondern Hochkommas verwenden. (Ich sehe doch richtig, dass das Backticks sind.)

Am Besten du informierst dich mal über Quoting in der Shell. Bei Hochkommas (') werden Variablen nämlich nicht ersetzt, bei Anführungsstrichen (") schon. Backticks sind was anderes, nämlich Kommandosubstitution.

Wenn du Variablen ausgewertet haben willst, dann musst du Anführungsstriche verwenden ... und dann aber darauf achten, dass du Sonderzeichen ggf. escapest (Backslash voranstellen)!

Lerne zu verstehen wie die Shell eine Zeile auswertet, dann wirst du keine Probleme mit Quoting und Escapen haben.
Use ed once in a while!

yeti

Re: Frage zu ls und sed

Beitrag von yeti » 14.06.2009 11:02:12

JaKlaRo hat geschrieben:ich habe in einem Thread gelesen, dass es schlechter Programmierstil ist, ls in Skripten zu verwenden.
Thread? Hier? Link?

Benutzeravatar
JaKlaRo
Beiträge: 121
Registriert: 06.03.2008 15:00:00
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Frage zu ls und sed

Beitrag von JaKlaRo » 14.06.2009 19:06:41

Hallo Yeti
yeti hat geschrieben:Thread? Hier? Link?
wenn ich den Thread irgendwo gespeichert hätte, wäre er von mir auch zitiert worden. Ich habe mich also nochmal auf die Suche gemacht. In diesem Forum habe ich folgendes gefunden:
http://debianforum.de/forum/viewtopic.p ... 24#p375324
und
http://debianforum.de/forum/viewtopic.p ... 91#p592091
Ich kann aber den genauen Thread nicht mehr finden, da ich alle möglichen Foren bei Problemen durchsuche und meistens irgendwo auch einen Lösungsansatz finde. Daher war meine erste Frage kein Originalzitat, sondern sinngemäßes Zitieren.
Wenn ich die Antworten richtig verstehe, gibt es keine Einschränkung hinsichtlich der Benutzung von bestimmten Befehlen, gut so.

Nun zu meiner zweiten Frage:
Meillo hat geschrieben:Zu allererst einmal wolltest du sicher keine Backticks sondern Hochkommas verwenden. (Ich sehe doch richtig, dass das Backticks sind.)
Sorry, da habe ich mich vertippt, sollten Hochkommas sein.

Also:

Code: Alles auswählen

sed -n "$test" Datei
oder auch:

Code: Alles auswählen

sed -n "$zahl"p Datei
Gruß und Dank
JaKlaRo

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Frage zu ls und sed

Beitrag von Meillo » 14.06.2009 20:49:52

JaKlaRo hat geschrieben:Also:

Code: Alles auswählen

sed -n "$test" Datei
oder auch:

Code: Alles auswählen

sed -n "$zahl"p Datei
Genau.

Schön, dass du die Lösung für zukünftig Suchende aus rein schreibst und auch noch den Threadtitel auf gelöst setzst -- vorbildlich! :-D
Use ed once in a while!

Antworten