'set -i && set -e;' bei Shell-Skripts mit #!/bin/sh-Header ? [Gelöst]

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
jmar83
Beiträge: 962
Registriert: 20.06.2013 20:20:15
Wohnort: CH
Kontaktdaten:

'set -i && set -e;' bei Shell-Skripts mit #!/bin/sh-Header ? [Gelöst]

Beitrag von jmar83 » 25.02.2022 10:00:25

Hallo zusammen

Aus best. Gründen muss ich nicht '#!/bin/bash', sondern '#!/bin/sh' verwenden. Nun stellte ich aber fest, dass damit z.B. sowas (Zeilen 2+3) hier nicht mehr geht:

Code: Alles auswählen

#!/bin/sh
set -i;
set -e;
echo "test ... ";
exit 0;
Vielen Dank für eure Feedbacks! :-)
Zuletzt geändert von jmar83 am 03.03.2022 11:29:05, insgesamt 1-mal geändert.
Freundliche Grüsse, Jan

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

Re: 'set -i && set -e;' bei Shell-Skripts mit #!/bin/sh-Header ?

Beitrag von Meillo » 25.02.2022 10:06:41

Auf den meisten Systemen ist /bin/sh ein Symlink auf eine andere Shell. Was sagt:

Code: Alles auswählen

ls -l /bin/sh
Dann musst du in der Manpage dieser Shell nachlesen.
Use ed once in a while!

jmar83
Beiträge: 962
Registriert: 20.06.2013 20:20:15
Wohnort: CH
Kontaktdaten:

Re: 'set -i && set -e;' bei Shell-Skripts mit #!/bin/sh-Header ?

Beitrag von jmar83 » 25.02.2022 10:06:59

Und sowas...

echo "Test ... " > "testfile.out"

...erzeugt mir nicht "testfile.out", sondern "testfile.out?".

Warum also das Fragezeichen?
Freundliche Grüsse, Jan

jmar83
Beiträge: 962
Registriert: 20.06.2013 20:20:15
Wohnort: CH
Kontaktdaten:

Re: 'set -i && set -e;' bei Shell-Skripts mit #!/bin/sh-Header ?

Beitrag von jmar83 » 25.02.2022 10:07:31

@Meillo:

Danke für dein Feedback.

Folgendes:

Code: Alles auswählen

lrwxrwxrwx    1 root     root            12 May 20  2016 /bin/sh -> /bin/busybox
Freundliche Grüsse, Jan

jmar83
Beiträge: 962
Registriert: 20.06.2013 20:20:15
Wohnort: CH
Kontaktdaten:

Re: 'set -i && set -e;' bei Shell-Skripts mit #!/bin/sh-Header ?

Beitrag von jmar83 » 25.02.2022 10:09:25

Hand auf's Herz - ist kein Debian, sondern sonstwas - irgendein Embedded-Linux welche auf einem ALL3072-LAN-Schalter von Allnet läuft...

diese "busybox" scheint etwas speziell zu sein - leerzeilen im Shell-Skript mag sie auch nicht... brauche ich sonst jeweils zur "Formatierung" - zwecks besserer Übersicht.
Freundliche Grüsse, Jan

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

Re: 'set -i && set -e;' bei Shell-Skripts mit #!/bin/sh-Header ?

Beitrag von Meillo » 25.02.2022 10:12:12

Es aendert sich nichts daran, dass du halt genau die Features nutzen kannst, die die Busybox sh anbietet. Mache dich schlau was die kann und schreibe dein Script so, dass es damit funktioniert. Die einzige Alternative dazu waere es eine andere Shell oder eine andere Scriptsprache auf das System zu bringen.
Use ed once in a while!

jmar83
Beiträge: 962
Registriert: 20.06.2013 20:20:15
Wohnort: CH
Kontaktdaten:

Re: 'set -i && set -e;' bei Shell-Skripts mit #!/bin/sh-Header ?

Beitrag von jmar83 » 25.02.2022 10:12:46

Vielen Dank! :-)
Freundliche Grüsse, Jan

jmar83
Beiträge: 962
Registriert: 20.06.2013 20:20:15
Wohnort: CH
Kontaktdaten:

Re: 'set -i && set -e;' bei Shell-Skripts mit #!/bin/sh-Header ?

Beitrag von jmar83 » 25.02.2022 10:13:53

Weiss du evtl. was es mit "DATEINAME.XYZ" vs. "DATEINAME.XYZ?" auf sich hat?
Freundliche Grüsse, Jan

Huo
Beiträge: 614
Registriert: 26.11.2017 14:03:31
Wohnort: Freiburg

Re: 'set -i && set -e;' bei Shell-Skripts mit #!/bin/sh-Header ?

Beitrag von Huo » 25.02.2022 11:24:08

jmar83 hat geschrieben: ↑ zum Beitrag ↑
25.02.2022 10:13:53
Weiss du evtl. was es mit "DATEINAME.XYZ" vs. "DATEINAME.XYZ?" auf sich hat?
Nur ins Blaue geraten: Vielleicht ist dein Skript mit CRLF-Zeilenenden (\r\n) statt LF-Zeilenenden (\n) versehen? Das kannst du z.B. mit dem file-Befehl überprüfen:

Code: Alles auswählen

~$ file script.sh
script.sh    Bourne-Again shell script, Unicode text, UTF-8 text, with CRLF line terminators

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

Re: 'set -i && set -e;' bei Shell-Skripts mit #!/bin/sh-Header ?

Beitrag von Meillo » 25.02.2022 12:38:17

Huo hat geschrieben: ↑ zum Beitrag ↑
25.02.2022 11:24:08
jmar83 hat geschrieben: ↑ zum Beitrag ↑
25.02.2022 10:13:53
Weiss du evtl. was es mit "DATEINAME.XYZ" vs. "DATEINAME.XYZ?" auf sich hat?
Nur ins Blaue geraten: Vielleicht ist dein Skript mit CRLF-Zeilenenden (\r\n) statt LF-Zeilenenden (\n) versehen?
Gute Idee. Damit waere es gar kein Fragezeichen. Folglich waere es auch interessant zu schauen was fuer ein Zeichen es tatsaechlich ist:

Code: Alles auswählen

ls DATEINAME* | od -c
Use ed once in a while!

jmar83
Beiträge: 962
Registriert: 20.06.2013 20:20:15
Wohnort: CH
Kontaktdaten:

Re: 'set -i && set -e;' bei Shell-Skripts mit #!/bin/sh-Header ?

Beitrag von jmar83 » 03.03.2022 11:28:52

Danke für die Feedbacks. Das Problem hat sich (glücklicherweise) andersweitig gelöst: Habe gesehen dass ich meinen Use-Case (immer ein, bei Tastendruck Unterbrechung für x Sekunden) auch per Web-GUI zusammenklicken lässt... :-)
Freundliche Grüsse, Jan

Antworten