eigenes C- Programm in ShellScript aufrufen
eigenes C- Programm in ShellScript aufrufen
Hallo,
ist es eigentlich möglich, ein eigenes C Programm, welches ich mit
gcc -o test test.c
compiliert habe, in einem Shellscript aufzurufen?
Normal ruf ich dieses Programm ja mit
./test
auf, um es auszuführen.
Geht das auch irgendwie in einem Shellscript?
Vielen Dank,
lg
Max
ist es eigentlich möglich, ein eigenes C Programm, welches ich mit
gcc -o test test.c
compiliert habe, in einem Shellscript aufzurufen?
Normal ruf ich dieses Programm ja mit
./test
auf, um es auszuführen.
Geht das auch irgendwie in einem Shellscript?
Vielen Dank,
lg
Max
-
- Beiträge: 3799
- Registriert: 26.02.2009 14:35:56
Re: eigenes C- Programm in ShellScript aufrufen
klar doch - Programm nach /usr/local/bin (der Ordnung halber)
script
#!/bin/bash < oder andere shell
/usr/local/bin/test und eventuell Parameter
echo "RC meines Programmes" $?
wobei ein test ein unglücklicher Name ist, weil auch Bestandteil der bash
if [ test usw..]
Besser sprechender name wie meincprog oder sowas..
script
#!/bin/bash < oder andere shell
/usr/local/bin/test und eventuell Parameter
echo "RC meines Programmes" $?
wobei ein test ein unglücklicher Name ist, weil auch Bestandteil der bash
if [ test usw..]
Besser sprechender name wie meincprog oder sowas..
Re: eigenes C- Programm in ShellScript aufrufen
und das geht alles auch mit übergabe prarameter und rückgabewert meines Programmes?
Besten Dank,
lg
Generic1
Besten Dank,
lg
Generic1
Re: eigenes C- Programm in ShellScript aufrufen
/usr/bin/test war das Argument, seine Programme nicht 'test' zu nennen. Bei Scripten ist’s ansonsten eine gute Idee, mit absoluten Pfaden zu arbeiten.
Parameter lassen sich wie üblich übergeben, Rückgabewerte übernehmen, ja.
cu,
niemand
Parameter lassen sich wie üblich übergeben, Rückgabewerte übernehmen, ja.
cu,
niemand
Re: eigenes C- Programm in ShellScript aufrufen
Es gibt keinen grundsaetzlichen Unterschied zwischen Systemprogrammen und eigenen Programmen. Das ist ein Qualitaetsmerkmal von Unix. Das was du als Unterschied wahrnehmen koenntest haengt von PATH ab und diese Variable kannst du selbst anpassen.
Use ed once in a while!
- Natureshadow
- Beiträge: 2157
- Registriert: 11.08.2007 22:45:28
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Radevormwald
-
Kontaktdaten:
Re: AW: eigenes C- Programm in ShellScript aufrufen
WTF? Er wollte doch ./test aufrufen. Also wohl am Besten mit ./test.pferdefreund hat geschrieben:klar doch - Programm nach /usr/local/bin
-nik
Linux Professional Institute Certification Level 2
Warum bist du immer so gehässig? | FAQ (aka "Mein Sound ist kaputt!")
Meine DF.de-Stalker: Cae und TRex - I <3 you!
Warum bist du immer so gehässig? | FAQ (aka "Mein Sound ist kaputt!")
Meine DF.de-Stalker: Cae und TRex - I <3 you!
Re: eigenes C- Programm in ShellScript aufrufen
Ein Porgramm in einem Script so aufzurufen ist wohl nicht sehr sinnvoll.Natureshadow hat geschrieben: WTF? Er wollte doch ./test aufrufen. Also wohl am Besten mit ./test.
- Natureshadow
- Beiträge: 2157
- Registriert: 11.08.2007 22:45:28
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Radevormwald
-
Kontaktdaten:
Re: AW: eigenes C- Programm in ShellScript aufrufen
Warum das denn nicht? Nach /usr kopieren ist noch sinnloser. Wieso sollte er root sein und das können?chaisen hat geschrieben:Ein Porgramm in einem Script so aufzurufen ist wohl nicht sehr sinnvoll.Natureshadow hat geschrieben: WTF? Er wollte doch ./test aufrufen. Also wohl am Besten mit ./test.
Linux Professional Institute Certification Level 2
Warum bist du immer so gehässig? | FAQ (aka "Mein Sound ist kaputt!")
Meine DF.de-Stalker: Cae und TRex - I <3 you!
Warum bist du immer so gehässig? | FAQ (aka "Mein Sound ist kaputt!")
Meine DF.de-Stalker: Cae und TRex - I <3 you!
Re: eigenes C- Programm in ShellScript aufrufen
Weil das Script so nur funktioniert wenn er sich im richtigen Ordner befindet, wenn dann sollte man es mit den absoluten Pfad aufrufen.Natureshadow hat geschrieben: Warum das denn nicht? Nach /usr kopieren ist noch sinnloser. Wieso sollte er root sein und das können?
Re: eigenes C- Programm in ShellScript aufrufen
Es stellt kein Problem dar. Demo:Ob man nun einen absoluten Pfad in's Skript reinpackt (wie ich es getan habe) oder man einen relativen wie ./bin verwendet, ist Erwaegungssache. Ein lokaler Pfad bricht, sobald die Binary nicht im CWD beim Ausfuehren des Skripts befindet. Ein absoluter Pfad verhindert "mal eben umkopieren".
Demo (mit relativem Pfad ./bin a b c):Schoen und richtig waere natuerlich eine Loesung wieim Skript. Es wird das Verzeichnis des ausgefuehrten Skriptes bestimmt und relativ dazu die Binary gestartet. Alternativ kann man auch dort hin cd'en und wieder zurueck.
Gruss Cae
Code: Alles auswählen
$ cat >/tmp/bin.c <<EOF
> #include <stdio.h>
>
> int main(int argc, char **argv) {
> while (--argc) printf("%3d: %s\n", argc, argv[argc]);
>
> return 0;
> }
> EOF
$ gcc -Wall -W -o /tmp/bin /tmp/bin.c
$ /tmp/bin a b c
3: c
2: b
1: a
$ cat >/tmp/script <<EOF
> #!/bin/sh
>
> /tmp/bin a b c
> echo "ret: '$?'"
> EOF
$ chmod +x /tmp/script
$ /tmp/script
3: c
2: b
1: a
ret: '0'
$
Demo (mit relativem Pfad ./bin a b c):
Code: Alles auswählen
$ cd /
$ /tmp/script
/tmp/script: 3: /tmp/script: ./bin: Permission denied
ret: '0'
$ cd /tmp
$ /tmp/script
3: c
2: b
1: a
ret: '0'
$
Code: Alles auswählen
#!/bin/sh
prefix="$(dirname $0)"
$prefix/bin a b c
echo "ret: '0'"
Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier
- Natureshadow
- Beiträge: 2157
- Registriert: 11.08.2007 22:45:28
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Radevormwald
-
Kontaktdaten:
Re: AW: eigenes C- Programm in ShellScript aufrufen
Genau so.Cae hat geschrieben:Schoen und richtig waere natuerlich eine Loesung wieim Skript. Es wird das Verzeichnis des ausgefuehrten Skriptes bestimmt und relativ dazu die Binary gestartet. Alternativ kann man auch dort hin cd'en und wieder zurueck.Code: Alles auswählen
#!/bin/sh prefix="$(dirname $0)" $prefix/bin a b c echo "ret: '0'"
Linux Professional Institute Certification Level 2
Warum bist du immer so gehässig? | FAQ (aka "Mein Sound ist kaputt!")
Meine DF.de-Stalker: Cae und TRex - I <3 you!
Warum bist du immer so gehässig? | FAQ (aka "Mein Sound ist kaputt!")
Meine DF.de-Stalker: Cae und TRex - I <3 you!
-
- Beiträge: 134
- Registriert: 03.02.2011 11:11:21
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Frankfurt
Re: AW: eigenes C- Programm in ShellScript aufrufen
Naja, $0 ist nicht immer zuverlässig.Natureshadow hat geschrieben:Genau so.Cae hat geschrieben:Schoen und richtig waere natuerlich eine Loesung wieim Skript. Es wird das Verzeichnis des ausgefuehrten Skriptes bestimmt und relativ dazu die Binary gestartet. Alternativ kann man auch dort hin cd'en und wieder zurueck.Code: Alles auswählen
#!/bin/sh prefix="$(dirname $0)" $prefix/bin a b c echo "ret: '0'"
Code: Alles auswählen
$ ls -F
bny* dir/ scr*
$ ls -l dir
insgesamt 0
lrwxrwxrwx 1 foo bar 6 6. Feb 16:04 lnk -> ../scr
$ cat scr
#!/bin/sh
echo "\$0 is $0"
prefix="$(dirname $0)"
$prefix/bny a b c
Code: Alles auswählen
$ ./bny a b c
a b c
$ ./scr
$0 is ./scr
a b c
Code: Alles auswählen
$ cd dir
$ ./lnk
$0 is ./lnk
./lnk: line 4: ./bny: Datei oder Verzeichnis nicht gefunden
$ bash < ../scr
$0 is bash
bash: line 4: ./bny: Datei oder Verzeichnis nicht gefunden
$ . ../scr
$0 is bash
bash: ./bny: Datei oder Verzeichnis nicht gefunden
- Natureshadow
- Beiträge: 2157
- Registriert: 11.08.2007 22:45:28
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Radevormwald
-
Kontaktdaten:
Re: AW: eigenes C- Programm in ShellScript aufrufen
Code: Alles auswählen
real="$0"
[ -h "$real" ] && real="$(readlink "$real")"
prefix="$(dirname "$real")"
Linux Professional Institute Certification Level 2
Warum bist du immer so gehässig? | FAQ (aka "Mein Sound ist kaputt!")
Meine DF.de-Stalker: Cae und TRex - I <3 you!
Warum bist du immer so gehässig? | FAQ (aka "Mein Sound ist kaputt!")
Meine DF.de-Stalker: Cae und TRex - I <3 you!