Ich möchte mir ein Script bauen z.B xdialog
- DEBIANUNDANDREAS
- Beiträge: 1304
- Registriert: 01.06.2013 10:37:46
Ich möchte mir ein Script bauen z.B xdialog
Hallo liebes Forum, Mitglieder und Leser dieses Thema.
Ich möchte mir ein Script bauen, habe aber keine Erfahrung, das Script sollte prüfen>>>
if xdialog (der Befehl) existiert dann echo "Der Befehl xdialog ist installiert" ansonsten "der Befehl xdialog ist nicht installiert" dann sudo apt-get install dialog
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^An dieser Stelle weiss ich nicht, wie es funktionieren soll, der passende Code fehlt.
Wer kann mir bei der Erstellung meines gewünschten Scripts helfen?
Ich möchte mir ein Script bauen, habe aber keine Erfahrung, das Script sollte prüfen>>>
if xdialog (der Befehl) existiert dann echo "Der Befehl xdialog ist installiert" ansonsten "der Befehl xdialog ist nicht installiert" dann sudo apt-get install dialog
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^An dieser Stelle weiss ich nicht, wie es funktionieren soll, der passende Code fehlt.
Wer kann mir bei der Erstellung meines gewünschten Scripts helfen?
Re: Ich möchte mir ein Script bauen z.B xdialog
which gibt dir den Pfad zum Binary (oder alias) eines Befehls aus. Falls es nichts findet spuckt es ein "Command not found." aus:
Zusammen mit grep lässt sich daraus eine leichte boolsche Prüfung bauen:
Als Gegenbeispiel für etwas Vorhandenes:
@Meillo, Cae, wer auch immer:
Elegantere Lösungen nehme ich gern!
Code: Alles auswählen
~: which xdialog
xdialog: Command not found.
Code: Alles auswählen
~: which xdialog | grep -c 'Command not found'
1
Code: Alles auswählen
~: which ls | grep -c 'Command not found'
0
Elegantere Lösungen nehme ich gern!
Re: Ich möchte mir ein Script bauen z.B xdialog
Man könnte auch einfach den return Wert von which auswerten
Edit: shebang-Zeile eingefügt
Code: Alles auswählen
#!/bin/bash
if which xdialog >/dev/null; then
echo "Der Befehl xdialog ist installiert"
else
echo "Der Befehl xdialog ist nicht installiert"
fi
Edit: shebang-Zeile eingefügt
Zuletzt geändert von 4A4B am 13.08.2013 15:20:31, insgesamt 1-mal geändert.
Re: Ich möchte mir ein Script bauen z.B xdialog
Da habe ich die Manpage wohl falsch interpretiert:
Was so ein Komma doch ausmachen kann.RETURN VALUE
Which returns the number of failed arguments, or -1 when no `programname´ was given.
Re: Ich möchte mir ein Script bauen z.B xdialog
Sorry, ich meinte natürlich den Exit Status, nicht den Return Value
Edit: und ich habe anscheinend auch eine andere Man-Page:
Edit: und ich habe anscheinend auch eine andere Man-Page:
EXIT STATUS
0 if all specified commands are found and executable
1 if one or more specified commands is nonexistent or not executable
2 if an invalid option is specified
Re: Ich möchte mir ein Script bauen z.B xdialog
Ich sitz hier vor einer Suse.4A4B hat geschrieben:Edit: und ich habe anscheinend auch eine andere Man-Page:
Re: Ich möchte mir ein Script bauen z.B xdialog
Ja, ich habe die Manpage auch grad im Netz gefunden:
http://unixhelp.ed.ac.uk/CGI/man-cgi?which
Die Debian- und Suse-Versionen unterscheiden sich ja schon beträchtlich. Wenn which bei Erfolg eine 0 zurückgibt, sollte mein if Konstrukt aber auch unter Suse funktionieren.
http://unixhelp.ed.ac.uk/CGI/man-cgi?which
Die Debian- und Suse-Versionen unterscheiden sich ja schon beträchtlich. Wenn which bei Erfolg eine 0 zurückgibt, sollte mein if Konstrukt aber auch unter Suse funktionieren.
- DEBIANUNDANDREAS
- Beiträge: 1304
- Registriert: 01.06.2013 10:37:46
Re: Ich möchte mir ein Script bauen z.B xdialog
Was für einen Fehler (Fehlermeldung)?
Das vollständige Script muss am Anfang noch eine Shebang-Zeile haben, falls du das meinst:
Das vollständige Script muss am Anfang noch eine Shebang-Zeile haben, falls du das meinst:
Code: Alles auswählen
#!/bin/bash
Re: Ich möchte mir ein Script bauen z.B xdialog
Nun korrigierst du deinen Tippfehler und fügst in dieser Zeile noch ein x hinzu:DEBIANUNDANDREAS hat geschrieben:Und was nun?
Code: Alles auswählen
if which dialog >/dev/null;
Re: Ich möchte mir ein Script bauen z.B xdialog
Sofern which offensichtlich nicht wirklich zuverlaessig auszuwerten ist, kann man die Funktionalitaet auch nachbauen:Das klappert den $PATH ab und guckt, ob das uebergebene Argument ausfuehrbar ist. Achtung, mywhich /bin/true deshalb false (ist das gut so?).
Gruss Cae
Code: Alles auswählen
mywhich() {
[ 0 = $# ] && return 2;
w=;
safeIFS="$IFS"; IFS=:;
for p in $PATH; do
[ -x "$p/$1" ] && {
w=1;
break;
};
done;
IFS="$saveIFS";
[ "$w" ] || return 1;
}
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
-
- Beiträge: 3289
- Registriert: 29.06.2013 17:32:10
- Lizenz eigener Beiträge: GNU General Public License
-
Kontaktdaten:
Re: Ich möchte mir ein Script bauen z.B xdialog
Was ist das für ein Skript, das xdialog installieren soll? Würde mindestens das Installieren weglassen.
Anstonsten ein Ansatz: set -e dann bricht das Skript bei Fehler ab und die Fehlermeldung xdialog: Kommando nicht gefunden sollten reichen.
MfG
inne
Anstonsten ein Ansatz: set -e dann bricht das Skript bei Fehler ab und die Fehlermeldung xdialog: Kommando nicht gefunden sollten reichen.
Code: Alles auswählen
#!/bin/sh
set -e
...
inne
(=_=)
Unsere neue Mutter: https://www.nvidia.com/de-de/data-center/a100/
Unsere neue Mutter: https://www.nvidia.com/de-de/data-center/a100/
- DEBIANUNDANDREAS
- Beiträge: 1304
- Registriert: 01.06.2013 10:37:46
Re: Ich möchte mir ein Script bauen z.B xdialog
andy@debian:~$
andy@debian:~$
Kein Handbucheintrag für set vorhanden
Code: Alles auswählen
set --h
bash: set: --: Ungültige Option
set: Gebrauch: set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]
andy@debian:~$
Code: Alles auswählen
man set
Re: Ich möchte mir ein Script bauen z.B xdialog
set ist ein Shell Builtin der bash. Informationen zu Shell Builtins kannst du dir mit help anzeigen lassen (siehe auch "help help")
Code: Alles auswählen
help set
Re: Ich möchte mir ein Script bauen z.B xdialog
Spricht irgendwas gegen type?Cae hat geschrieben:Sofern which offensichtlich nicht wirklich zuverlaessig auszuwerten ist ...
Code: Alles auswählen
type xdialog &>/dev/null && echo gibt es
Re: Ich möchte mir ein Script bauen z.B xdialog
Mal davon abgesehen, dass ich oben nicht dran gedacht habe... noe, vermutlich nicht. Es wuerde zwar auch bei anderen shell builtins mit ret 0 beenden, aber die heissen garantiert nicht xdialog. Aaaaber, was mir gerade auffaellt: Shell-Funktionen werden gematcht:Phineas hat geschrieben:Spricht irgendwas gegen type?Cae hat geschrieben:Sofern which offensichtlich nicht wirklich zuverlaessig auszuwerten ist ...
Code: Alles auswählen
$ foo(){:;}
$ type foo
foo is a shell function
$ echo $?
0
Code: Alles auswählen
xdialog(){date "+%F.%T +xd"; /usr/bin/xdialog; date "+%F.%T /xd";}
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