Wie Scripte für die Bash erstellen?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
sunghost
Beiträge: 794
Registriert: 27.10.2004 18:55:14

Wie Scripte für die Bash erstellen?

Beitrag von sunghost » 25.03.2009 15:44:39

Hallo,

ich möchte mehrere umfangreiche Befehle in einem Script zusammen fassen. Wenn ich dieses dann ausführe, möchte ich eine Auswahl angezeigt bekommen und dann z.B. die 6 für ein entspr. Befehl eingeben, der dann ausgeführt wird. Da ich in diesem Bereich Anfänger bin brauche ich ein paar Infos. Welche Sprache wird hierfür verwendet und was gibt es dabei zu beachten.
Danke

roli
Beiträge: 3174
Registriert: 10.09.2003 17:39:58

Re: Wie Scripte für die Bash erstellen?

Beitrag von roli » 25.03.2009 16:09:36

Hi,

das geht zwar ein wenig an deiner Frage vorbei, koennte aber trotzdem eine Loesung sein.
Definier dir doch für die einzelnen Befehle jeweils einen "alias" (in der ~/.bashrc) , wie z.B.:
alias ll="ls -la"

Wenn du jetzt in einer Konsole "ll" eingibst, wird "ls -la" ausgeführt, was aber in deinem Fall dann wohl ein laengerer Befehl waere.
Roland


"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"

Benutzeravatar
hikaru
Moderator
Beiträge: 13934
Registriert: 09.04.2008 12:48:59

Re: Wie Scripte für die Bash erstellen?

Beitrag von hikaru » 25.03.2009 16:22:04

Ein einfaches bash-Script könnte so aussehen:

Code: Alles auswählen

#!/bin/bash

CMD1="ls    "
CMD2="pwd   "
CMD3="whoami"
CMD4="groups"

echo
echo "Available shortcuts for commands:"
echo "1 - $CMD1 - list directory contents"
echo "2 - $CMD2 - print name of current/working directory"
echo "3 - $CMD3 - print effective userid"
echo "4 - $CMD4 - print the groups a user is in"
echo
echo "Please enter a number to call a command:"

read input

case "$input" in 
	1)
	CMD=$CMD1;;
	2)
	CMD=$CMD2;;
	3)
	CMD=$CMD3;;
	4)
	CMD=$CMD4;;
	*)
	echo "invalid input";
	exit 1;;
esac

echo
echo Command:
echo $CMD
echo
echo Output:
$CMD
Ich würde aber auch die Variante mit den Aliasen vorziehen.

sunghost
Beiträge: 794
Registriert: 27.10.2004 18:55:14

Re: Wie Scripte für die Bash erstellen?

Beitrag von sunghost » 26.03.2009 10:07:18

Moin Leute,

danke hikaru, das ist genau das was ich gesucht habe. Ist das Perl? Gibt es gute Howtos / Anleitungen die weitere Funktionen erklären?

Thx

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Re: Wie Scripte für die Bash erstellen?

Beitrag von nepos » 26.03.2009 10:26:26

Das ist ein Shell-Script für die Bash. Perl sieht anders aus.

sunghost
Beiträge: 794
Registriert: 27.10.2004 18:55:14

Re: Wie Scripte für die Bash erstellen?

Beitrag von sunghost » 26.03.2009 10:36:29

Hi,
ah ok. Wäre es auch mit Perl möglich, oder ist es wie auf Spatzen schießen? Was wird häufiger im professionellen Umfeld eingesetzt? (ja kommt drauf an ;)) Gibt es da generelle Aussagen?

thx

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: Wie Scripte für die Bash erstellen?

Beitrag von Duff » 26.03.2009 11:22:38

Wenn es "normale" Konsolenbefehle sind würde ich auf Bash zurück greifen.
Perl ist eher dazu da, um Texte/Logfiles zu parsen. Man kann dort gut reguläre Ausdrücke anwenden.
Oh, yeah!

sunghost
Beiträge: 794
Registriert: 27.10.2004 18:55:14

Re: Wie Scripte für die Bash erstellen?

Beitrag von sunghost » 26.03.2009 11:28:01

Ah ok, ich habe mittlerweile auch etwas gelesen und denke das Bashscripte hierfür eher geeignet sind. Ein Problem habe ich allerdings. In dem Befehl um eine Virtuelle Maschine zu starten sind 2 Anführungszeichen. Wenn ich sie mit \" auskommentiere erhalte ich eine Fehlermeldung: "Error: Cannot open VM: ", unknown file suffix" Wenn ich den ausgegebenen Befehl kopiere und ausführe ist alles ok. Woran könnte das liegen?

Ach noch einen. Ich habe kurz versucht das Menü in einer while do done Schleife laufen zu lassen und mit einem Exit-Code zu beenden, klappte leider nicht. Hast du noch einen Tipp ;)
thx

roli
Beiträge: 3174
Registriert: 10.09.2003 17:39:58

Re: Wie Scripte für die Bash erstellen?

Beitrag von roli » 26.03.2009 12:14:40

Hi,
sunghost hat geschrieben:Ein Problem habe ich allerdings. In dem Befehl um eine Virtuelle Maschine zu starten sind 2 Anführungszeichen. Wenn ich sie mit \" auskommentiere erhalte ich eine Fehlermeldung: "Error: Cannot open VM: ", unknown file suffix" Wenn ich den ausgegebenen Befehl kopiere und ausführe ist alles ok.
dann mach halt:

Code: Alles auswählen

case "$input" in
   1)
   CMD=$(mein unheimlich langer befehl der "..." enthaelt);;
Ist zwar jetzt ungetestet, sollte aber laufen.
Roland


"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"

Benutzeravatar
hikaru
Moderator
Beiträge: 13934
Registriert: 09.04.2008 12:48:59

Re: Wie Scripte für die Bash erstellen?

Beitrag von hikaru » 26.03.2009 12:57:55

sunghost hat geschrieben:ah ok. Wäre es auch mit Perl möglich, oder ist es wie auf Spatzen schießen? Was wird häufiger im professionellen Umfeld eingesetzt? (ja kommt drauf an ;)) Gibt es da generelle Aussagen?
Generelle Aussagen würde ich da nicht machen. Shell-Scripte sind der "traditionelle" Weg und für kleine Sachen durchaus brauchbar. Wenn es aber komplexer wird, kann Shell richtig ekelig werden.
Heute hat man auch überall einen Perl-Interpreter zur Hand und bei komplexen Sachverhalten ist Perl klar im Vorteil. Daher würde ich Shell immer dann bevorzugen, wenn es absehbar nur um sehr kleine Sachen geht. Ist die Komplexität größer oder nicht absehbar würde ich immer Perl bevorzugen.
Wenn man häufiger Scripts schreibt wird es irgendwann lästig zweigleisig zu fahren. Daher bin ich dazu übergegangen, alles was über einen simplen Programmaufruf hinausgeht in Perl zu schreiben.

So könnte übrigens der Code in Perl aussehen:

Code: Alles auswählen

#/usr/bin/perl -w

use strict;

my @CMD;

$CMD[1]="ls   ";
$CMD[2]="pwd  ";
$CMD[3]="whoami";
$CMD[4]="groups";

print "\nAvailable shortcuts for commands:\n";
print "1 - $CMD[1] - list directory contents\n";
print "2 - $CMD[2] - print name of current/working directory\n";
print "3 - $CMD[3] - print effective userid\n";
print "4 - $CMD[4] - print the groups a user is in\n\n";
print "Please enter a number to call a command:\n";

my $input=<STDIN>;

if (!defined($CMD[$input])) { print "\ninvalid input\n"; }
else {
	print "\nCommand:\n";
	print "$CMD[$input]\n\n";
	print "Output:\n";
	system($CMD[$input]);
}
Beim OPC hätte man damit natürlich keine Chance. Das geht auch "besser". ;-)

Kannst du mal bitte den VM-Aufruf posten? Offenbar ist es ja kein Shell-Problem, denn das Escapen der Anführungszeichen sollte funktionieren.

sunghost
Beiträge: 794
Registriert: 27.10.2004 18:55:14

Re: Wie Scripte für die Bash erstellen?

Beitrag von sunghost » 26.03.2009 15:31:52

Hi,
der Befehl lautet:
vmrun -T server -h https://localhost:8333/sdk -u User -p Pass start \"[standard] Server02/Server02.vmx\" nogui"
Perl sieht ja auch gar nicht so wild aus, schaus mir mal an.

Benutzeravatar
hikaru
Moderator
Beiträge: 13934
Registriert: 09.04.2008 12:48:59

Re: Wie Scripte für die Bash erstellen?

Beitrag von hikaru » 26.03.2009 15:41:58

Entweder ist in deinem Aufruf ein Gänsefüßchen zu viel oder eins zu wenig. Die treten für gewöhnlich immer paarweise auf.

sunghost
Beiträge: 794
Registriert: 27.10.2004 18:55:14

Re: Wie Scripte für die Bash erstellen?

Beitrag von sunghost » 27.03.2009 12:11:25

Sorry war etwas nachlässig. So sieht der Befehl normalerweise in der Bahs aus:
vmrun -T server -h https://localhost:8333/sdk -u User -p Pass start "[standard] Server02/Server02.vmx" nogui

Gruß
sunny

Benutzeravatar
habakug
Moderator
Beiträge: 4314
Registriert: 23.10.2004 13:08:41
Lizenz eigener Beiträge: MIT Lizenz

Re: Wie Scripte für die Bash erstellen?

Beitrag von habakug » 27.03.2009 13:04:25

Hallo!

Probier es doch mal so:

Code: Alles auswählen

vmrun -T server -h 'https://localhost:8333/sdk' -u User -p 'Pass' start "[standard] Server02/Server02.vmx" nogui
Gruß, habakug
( # = root | $ = user | !! = mod ) (Vor der PN) (Debianforum-Wiki) (NoPaste)

sunghost
Beiträge: 794
Registriert: 27.10.2004 18:55:14

Re: Wie Scripte für die Bash erstellen?

Beitrag von sunghost » 31.03.2009 16:17:46

Sorry hatte und habe nicht so viel Zeit, daher nur der kurze Einwurf, dass die Anführungszeichen das Problem zu sein scheinen. Probiere es dennoch demnächst mal aus.

Gruß

sunghost
Beiträge: 794
Registriert: 27.10.2004 18:55:14

Re: Wie Scripte für die Bash erstellen?

Beitrag von sunghost » 07.05.2009 21:19:54

Nabend,
sorry aber ich bin jetzt erst zum probieren gekommen. Es scheint auch so nicht zu funktionieren. Bei Command: wird nun nichts mehr angezeigt. Hast du noch eine Idee?

Danke

sunny

Antworten