ubuntuusers.de

[sh] sh Datei variable

Status: Gelöst | Ubuntu-Version: Ubuntu 17.04 (Zesty Zapus)
Antworten |

Cr4zyFl1x

Avatar von Cr4zyFl1x

Anmeldungsdatum:
22. September 2017

Beiträge: Zähle...

Wohnort: Münster

Hallo zusammen,

ich habe schon länger mit Linux zu tun, komme aber immer noch nicht so ganz klar.

Ich versuche derzeit eine sh Datei zu unterteilen, also:

Wenn ich "./tool p1" eingebe soll "java -jar programmautomation.jar" ausgeführt werden und wenn "./tool info" eingegeben wurde soll ein echo Befehl ausgeführt werden. Ich habe sehr viel im Internet geschaut bin aber nicht schlau geworden. Weiss wer wie ich das realisieren kann? Binn über jede Hilfe dankbar ☺

LG Cr4zyFl1x

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11261

Wohnort: München

Dein "tool" Skript muss sich das übergebene Argument ansehen (vgl. http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_02.html Abschnitt 3.2.5) und darauf reagieren, z.B. mit einem case-Statement:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#!/bin/bash

case "$1" in
 "p1")
    echo "calling 'java -jar programmautomation.jar'"
    java -jar programmautomation.jar
    ;;
 "info")
    echo "calling info"
    ;;
esac

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Hi Cr4zyFl1x,

erstmal herzlich willkommen hier auf dem Forum !

Verstehe ich das richtig, dass Dein Skript ./info heißt, und dass Du jetzt im Skript einfach nur die Option auswerten willst ?
Dazu findest Du hier etwas in bei uns im Wiki. Überhaupt solltest Du Dir mal das Skripting-Wiki 'reinziehen. Dann wirst Du ziemlich schnell klarer sehen.

LG,

track

Cr4zyFl1x

(Themenstarter)
Avatar von Cr4zyFl1x

Anmeldungsdatum:
22. September 2017

Beiträge: 3

Wohnort: Münster

Hallo,

danke mit der ./tool datei funzt es. aber mit der ./programms date nicht, obwohl beide den selben inhalt haben.

Fehler: -bash: ./programms: /bin/bash^M: Defekter Interpreter: Datei oder Verzeichnis nicht gefunden

Ich verstehe nicht was falsch ist.

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11261

Wohnort: München

Cr4zyFl1x schrieb:

Fehler: -bash: ./programms: /bin/bash^M: Defekter Interpreter: Datei oder Verzeichnis nicht gefunden

Ich verstehe nicht was falsch ist.

Das klingt nach einem Windows-Zeilenumbruch \r\n statt dem bei Linux üblichen \n - einfach einen Editor nutzen, der sowas nicht ungewollt einbaut.

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

... oder diese blöden Win...-Zeilenenden mit einem

1
sed -i  '/\r$//'  ./programms

weglöschen.

LG,

track

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13210

Es gibt dafür auch dos2unix. ☺

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Schon wahr.

Aber das kennt keine Option -i (inline-Modus: Datei direkt ändern), und seine Kollegen auch nicht.
(Das war der Grund für meine Wahl)

LG,

track

Seebär

Avatar von Seebär

Anmeldungsdatum:
2. Mai 2009

Beiträge: 833

Das ist falsch. dos2unix wandelt eine Datei direkt um. Insofern braucht es diese Option nicht. Es ist andersherum, man muss explizit -n verwenden, um eine neue Datei zu erzeugen.

Zur Demo:

1
echo abc > abc && unix2dos abc && dos2unix abc && xxd abc

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Ja, Du hast Recht: ich hatte die Doku nicht richtig gelesen.
Der "old File Mode" (so heißt das dort) ist dort tatsächlich voreingestellt.

Sorry für meinen Fehler.

LG,

track

Cr4zyFl1x

(Themenstarter)
Avatar von Cr4zyFl1x

Anmeldungsdatum:
22. September 2017

Beiträge: 3

Wohnort: Münster

Ich habs Danke euch allen 😉

Antworten |