$ mit echo in Datei schreiben

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
LangerAtem
Beiträge: 68
Registriert: 15.07.2018 10:42:08

$ mit echo in Datei schreiben

Beitrag von LangerAtem » 07.06.2020 00:04:43

Hallo

Kann mir jemand sagen, wie ich "$1" mit echo in eine Datei bekomme?

Nach

Code: Alles auswählen

echo "chmod +x $1" > datei
ergibt

Code: Alles auswählen

cat datei
chmod +x
Schon mal Danke im Voraus!

thoerb
Beiträge: 1677
Registriert: 01.08.2012 15:34:53
Lizenz eigener Beiträge: MIT Lizenz

Re: $ mit echo in Datei schreiben

Beitrag von thoerb » 07.06.2020 00:23:57

Wenn du das Argument so wie hier an dein Script übergibst, sollte das eigentlich so funktionieren.

TomL

Re: $ mit echo in Datei schreiben

Beitrag von TomL » 07.06.2020 00:33:06

So sollte $1 eigentlich nicht expandiert werden:

Code: Alles auswählen

echo 'chmod +x $1' > datei
....ich hoffe, dass das überhaupt die Frage war :?

tobo
Beiträge: 1993
Registriert: 10.12.2008 10:51:41

Re: $ mit echo in Datei schreiben

Beitrag von tobo » 07.06.2020 00:41:38

$1 existiert, als Positionsparameter, ja nur innerhalb eines Skripts oder einer Funktion. Das is der erste Parameter, der einem Skript oder Funktion übergeben wird. Wenn da bei dir nichts expandiert, dann übergibst du keinen Parameter oder bist nicht (mit deinem echo) innerhalb eines Skripts oder einer Funktion!?

Benutzeravatar
LangerAtem
Beiträge: 68
Registriert: 15.07.2018 10:42:08

Re: $ mit echo in Datei schreiben

Beitrag von LangerAtem » 07.06.2020 00:50:02

Wenn ich nur einfaches Hochkomma und nicht das Anführungzeichen eingebe, wie von Tomi vorgeschlagen, dann funktioniert es!
Danke für den Hinweis!

Aber was meint ihr mit
expandiert
? Das verstehe ich nicht.

thoerb
Beiträge: 1677
Registriert: 01.08.2012 15:34:53
Lizenz eigener Beiträge: MIT Lizenz

Re: $ mit echo in Datei schreiben

Beitrag von thoerb » 07.06.2020 01:01:52

Vielleicht erklärst du mal, was du eigentlich genau vorhast, dann kann man darauf auch vernünftig antworten.

Benutzeravatar
LangerAtem
Beiträge: 68
Registriert: 15.07.2018 10:42:08

Re: $ mit echo in Datei schreiben

Beitrag von LangerAtem » 07.06.2020 01:11:12

Hallo thoerb!
Vielleicht erklärst du mal, was du eigentlich genau vorhast, dann kann man darauf auch vernünftig antworten.
Habe ich das denn nicht getan?

Ich möchte die Zeile "chmod +x $1" nicht über einen Editor, sondern mit dem Befehl echo und ">" in die Datei schreiben.
Das Problem ist nicht das Dollarzeichen über vi oder nano ... einzufügen, sondern eben eben ohne einen Editor.

Aber in zwei Antworten wurde der Begriff expandiert verwendet und den verstehe ich hier nicht. Was bedeutet dieser Begriff im Zusammenhang mit einer Variablen ($1) ?

thoerb
Beiträge: 1677
Registriert: 01.08.2012 15:34:53
Lizenz eigener Beiträge: MIT Lizenz

Re: $ mit echo in Datei schreiben

Beitrag von thoerb » 07.06.2020 01:37:13

Sorry, ich verstehe es nicht, willst du das als Ergebnis:

Code: Alles auswählen

echo "chmod +x \$1" > datei
Also soll $1 als Zeichenkette und nicht als Variable in die Datei geschrieben werden?

TomL

Re: $ mit echo in Datei schreiben

Beitrag von TomL » 07.06.2020 10:04:43

LangerAtem hat geschrieben: ↑ zum Beitrag ↑
07.06.2020 01:11:12
Aber in zwei Antworten wurde der Begriff expandiert verwendet und den verstehe ich hier nicht. Was bedeutet dieser Begriff im Zusammenhang mit einer Variablen ($1) ?
Ja, Du hast es schon richtig erkannt, $1 ist i.ü.S. eine Variable und expandieren (wobei ich nicht mal sicher bin, dass es damit wirklich treffend umschrieben ist) bedeutet, den Inhalt dieser Variable zu verwenden. "$1" ist der Bezeichner für den Variablenwert, der auf den Wert expandiert wird, '$1' ist der Variablenname als Text. In Deinem Fall willst Du also nicht den Inhalt der Variable, sondern mit dem Text '$1' den Variablennamen selber... '$1' ist in diesem Fall keine Variable sondern ein statischer Text. ' anstatt " verhindert, dass die Variable $1 auf den Inhalt aufgelöst wird.... diese Art des Umgangs ist eine Bash-Eigenart.

Eine weitere Besonderheit in Deinem Fall ist, $1 würde einen Wert enthalten, der gar nichts mit Deinen Absichten zu tun hat, sondern sich auf einen Aufrufparameter (sofern es den gäbe oder leer sein) der aktiven Bash beziehen, mit der Du gerade arbeitest.

Benutzeravatar
LangerAtem
Beiträge: 68
Registriert: 15.07.2018 10:42:08

Re: $ mit echo in Datei schreiben

Beitrag von LangerAtem » 07.06.2020 21:12:30

ThomL:

Das passt! Es geht hier um ein Skript, eine Datei ausführbar zu machen. Die Variable $1 soll dann die betreffende Datei im Aufruf aufnehmen.

Zum Hintergrund: Es handelt sich hier um einen Vorschlag aus einem Lehrbuch zur Systemprogrammierung. Mich hat nur irritiert, dass im Buch die Ausrufungszeichen und nicht das Hochkomma genannt werden. Allerdings ist das Lehrbuch von 2011.

thoerb:
echo "chmod +x \$1" > datei


das geht auch. Es gibt also zwei Lösungen! Einmal das Hochkomma und dann die Lösung von thoerb mit dem Backslash.

Schon mal: Danke!

Antworten