PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : bashscript



~|=?FrAnZ?=|~03
02.04.03, 17:35
ich hab schon gegooglet und die suchfunktion genutzt in der suchfunktion habe ich auch keine tuts oders so. bei google hats verschiedene schreibweisen in den scripts. ich weiß nicht wies richtig ist.
vielleicht findet ihr den fehler.
code:
#!/bin/bash

echo -e "Gebe bitte ein was du sehen willst:\n";
echo -e "U für Uptime, D für DATUM/ZEIT\n";

read i

if [ "i" -eq "U" ]; then
u=Yes
exit 1
fi
if [ "d" -eq "D" ]; then
d=Yes
exit 1
fi
if [ "d" -eq "UP" ]; then
u=Yes
d=Yes
exit 1
fi
if [ "u" -eq "Yes" ]; then
# UPTIME anzeigen:
echo -e "UPTIME:";
echo -e "--------------------------------------------------------------------------------\n";
uptime
echo -e "--------------------------------------------------------------------------------\n";
exit 1
fi
if [ "d" -eq "Yes" ]; then
# DATUM anzeigen:
echo -e "DATUM/ZEIT:";
echo -e "--------------------------------------------------------------------------------\n";
date
echo -e "--------------------------------------------------------------------------------\n";
exit 1
fi

melody lee
02.04.03, 17:39
if [ "i" -eq "U" ]; Das muss "$i" statt i sein und "$U" statt U heissen. Der Wert einer Variablen i wird mit $i abgefragt.
"-eq" ist für numerische Tests gedacht, für Zeichenketten nimm "=".
http://123.koehntopp.de/kris/artikel/unix/shellprogrammierung/

~|=?FrAnZ?=|~03
02.04.03, 20:43
danke.
den link lese ich mir mal durch wird sicherlich sehr hilfreich sein.
das mit dem gleichheitszeichen hatte ich drin da ich aber bei google sowas gefunden habe wo -eq benutzt wird und in perl eq benutzt wird habe ich des geändert. das mit den variablen habe ich auch gehabt aber da habe ich runde klammern und keine eckigen drummrum gehabt.

melody lee
02.04.03, 20:55
den link lese ich mir mal durch wird sicherlich sehr hilfreich sein. Mach das dringend, Dir fehlen scheinbar die Basics in Shellprogrammierung. [ blah -eq fasel ] ist ein test und etwas anderes als Ausdrücke in runden Klammern.
Nett und leicht verständlich ist auch http://www.linuxfibel.de/bashprog.htm
Die Programmierseiten des Forums sind nach http://mrunix.de ausgelagert.

Tip: Dein Skript ist einfacher mit case- statt if-Anweisungen zu realisieren.

~|=?FrAnZ?=|~03
02.04.03, 20:58
so jetzt siehts so aus es werden auch keine fehlermeldungen mehr angezeigt aber es gibt nix aus:
#!/bin/bash

echo -e "\n";
echo -e "Gebe bitte ein was du sehen willst:\n";
echo -e "U für Uptime, D für DATUM/ZEIT\n";

read i

if [ $i == "U" ]; then
u=Yes
exit 1
fi
if [ $i == "D" ]; then
d=Yes
exit 1
fi
if [ $i == "UD" ]; then
u=Yes
d=Yes
exit 1
fi
if [ $u == "Yes" ]; then
# UPTIME anzeigen:
echo -e "UPTIME:";
echo -e "--------------------------------------------------------------------------------\n";
uptime
echo -e "--------------------------------------------------------------------------------\n";
exit 1
fi
if [ $d == "Yes" ]; then
# DATUM anzeigen:
echo -e "DATUM/ZEIT:";
echo -e "--------------------------------------------------------------------------------\n";
date
echo -e "--------------------------------------------------------------------------------\n";
exit 1
fi

da kommt jetzt raus:
Gebe bitte ein was...:
U.....
dann muss man den buchstaben eingeben wenn man U, D oder UD eingibt dann kommt nix mehr und es wird beendet

xstevex22
02.04.03, 21:00
#!/bin/bash

echo -n "Gebe bitte ein was du sehen willst (U = uptime / D = Datum/Zeit): "
read i

if ( [ $i = "U" ] || [ $i = "u" ] || [ $i = "UD" ] || [ $i = "ud" ] ); then
# UPTIME anzeigen:
echo "UPTIME:";
echo "--------------------------------------------------------------------------------";
uptime
echo "--------------------------------------------------------------------------------";
fi
if ( [ $i = "D" ] || [ $i = "d" ] || [ $i = "UD" ] || [ $i = "ud" ] ); then
# DATUM anzeigen:
echo "DATUM/ZEIT:";
echo "--------------------------------------------------------------------------------";
date
echo "--------------------------------------------------------------------------------";
fi

Jasper
03.04.03, 11:35
Original geschrieben von xstevex22
#!/bin/bash

echo -n "Gebe bitte ein was du sehen willst (U = uptime / D = Datum/Zeit): "
read i

if ( [ $i = "U" ] || [ $i = "u" ] || [ $i = "UD" ] || [ $i = "ud" ] ); then
# UPTIME anzeigen:
echo "UPTIME:";
echo "--------------------------------------------------------------------------------";
uptime
echo "--------------------------------------------------------------------------------";
fi
if ( [ $i = "D" ] || [ $i = "d" ] || [ $i = "UD" ] || [ $i = "ud" ] ); then
# DATUM anzeigen:
echo "DATUM/ZEIT:";
echo "--------------------------------------------------------------------------------";
date
echo "--------------------------------------------------------------------------------";
fi

statt:

if ( [ $i = "U" ] || [ $i = "u" ] || [ $i = "UD" ] || [ $i = "ud" ] ); then

einfacher:

if [ $i = "U" -o $i = "u" -o $i = "UD" -o $i = "ud" ]; then

-j

~|=?FrAnZ?=|~03
04.04.03, 16:28
danke