PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bash // vergleich von werten // command not found???


ESAD
2005-05-07, 20:39:30
ich versuche hier gerade ein paar übungsbeispiele in der bash zu erledigen
jetzt habe ich aber ein komisches Problem

der code schaut so aus (es handelt sich um ein programm bei dem in einem script der nachname ausgewählt wird und dann ein wert übergeben wird und wo dann bei einem anderen script der volle name ausgegebn wird)

programm : nachname

echo "1 asd"
echo "2 ads"
echo "3 awe"
echo "4 asdr"
read wahl
./vorname $wahl

programm: vorname

$wahl
if ( $wahl = "1" )
then
echo 'asd edf'
fi


dass problem ist jetzt, dass er sich über das = aufregt was ich zum vergleichen verwende. er sagt mir ./vorname: =: command not found

was will er mir damit sagen??
mfg esad

Aqualon
2005-05-07, 21:38:35
ich versuche hier gerade ein paar übungsbeispiele in der bash zu erledigen
jetzt habe ich aber ein komisches Problem

der code schaut so aus (es handelt sich um ein programm bei dem in einem script der nachname ausgewählt wird und dann ein wert übergeben wird und wo dann bei einem anderen script der volle name ausgegebn wird)

programm : nachname

echo "1 asd"
echo "2 ads"
echo "3 awe"
echo "4 asdr"
read wahl
./vorname $wahl

programm: vorname

$wahl
if ( $wahl = "1" )
then
echo 'asd edf'
fi


dass problem ist jetzt, dass er sich über das = aufregt was ich zum vergleichen verwende. er sagt mir ./vorname: =: command not found

was will er mir damit sagen??
mfg esad
Falls das da oben shellscripts sind, muss das if [ $wahl = "1" ] heissen.

http://www.tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-6.html

Aqua

ESAD
2005-05-08, 10:15:43
wenn ich beim if die ( durch [ ersetze bekomme ich diese fehlermeldung
./vorname: [: =: unary operator expected

LovesuckZ
2005-05-08, 17:34:51
Ich denke, du vergleichst oben Zahlen.
Probiere mal, ob "if [ $wahl -eq 1 ]" funktioniert.

86318
2005-05-08, 19:14:31
probiers mal so: (änderungen rot markiert)


programm : nachname

echo "1 asd"
echo "2 ads"
echo "3 awe"
echo "4 asdr"
read wahl
./vorname $wahl

programm: vorname

wahl=$1
if [ $wahl = "1" ]
then
echo 'asd edf'
fi


EDIT: eine erklärung dazu wär vielleicht auch ganz hilfreich ;)
beim aufruf des scripts ./vorname wird nur der wert der variablen übergeben, nicht deren name. die alte variable $wahl ist dem script ./vorname nurnoch als erster parameter bekannt, auf den man mit $1 zugreift. (in der folge dann $2 für den zweiten parameter usw.)

Harleckin
2005-05-08, 22:02:15
#!/bin/sh

if [ $1 == "string" ]; then
echo ":)"
fi