Belépés
Bash script - Beolvasás egy változóba STDIN-ról
2010. március 1. – 10.47 – mephisto
Hey!
Szeretnék írni egy egyszerűbb shell scriptet és ott leragadtam, hogy beolvassak 1 db karaktert. Szval a script a felhasználótól 1 karaktert (számot) várjon.
A read -n 1 nagyon jól működik, a terminálban, de amikor scriptben is megírom akkor azt kapom, hogy
read: 4: Illegal option -n
Előre is kösz a segítséget!
- A hozzászóláshoz regisztráció és belépés szükséges
#!/bin/bashecho -n "Kérem a Bemenetet: "; read -e IDEecho $IDEDe paraméterekkel is megoldható:
#!/bin/bashif [ $# -ne 1 ]; thenecho -e "$0 usage: parameter1"exitfiPARAMETER="$1"echo $PARAMETER||"Ha előre tudtad volna, hogy a gyertya lángja tűz, akkor már régen kész lenne az étel..." || My Homepage = Hasznos tippek & Trükkök
Hali!
Bocs, hogy eddig nem írtam csak nem tudtam géphez jutni.
Szval
-nál#!/bin/bash
echo -n "Kérem a Bemenetet: "; read -e IDE
Illegal option -eÉs próbáltam egy file existet is csinálni, de ott sem működnek a dolgok úgy ahogy kellene nekik pedig szóról szóra követtem a tutorialt. Még az ott leírtak sem működött ctrl+c ctrl+v-vel.
#!/bin/bashread -p "Enter a password" pass
if test "$pass" == "jerry"
then
echo "Password verified."
fi
Terminal:
Enter a passwordjerrytest: 6: jerry: unexpected operator
Bash shell kell mindenképp
bash 1.shElágazásod meg nem jó, mivel lehagytad a szögletes zárójeleket. Meg minek oda a "test" ?
Amiket leírtam működik, kipróbálva írtam neked.
||"Ha előre tudtad volna, hogy a gyertya lángja tűz, akkor már régen kész lenne az étel..." || My Homepage = Hasznos tippek & Trükkök
"
test" maga a szögletes zárójel, csak így is lehet használni: [ feltétel ]Bár nekem mindkét módszerrel működik... Szóval érthetetlen.
Esetleg még így:
#!/bin/bashecho -n "Enter a password: "
read "pass"
if [ "$pass" == "jerry" ]
then
echo "Password verified."
fi
| Aham ühüm hát persze! | twitter | fejlesztés alatt... (new) | Minus (10GB ingyen tárhely)
Szerintem karakterkódolási probléma lesz. Ne másold be a szkriptet, hanem gépeld be.
Szerintem valamiért nem a bash builtin test-et használod, és ott bezavar, hogy elvileg = az operátor neve – ezek szerint a bash elfogadja az ==-t is, de a /usr/bin/test (és a
/usr/bin/[) nem tesz így. Mit ír ki a szkriptedben egytype [?Ugyanaz lehet a read baja is: az is shell builtin (nálam nincs belőle alternatív verzió, de például bash, sh és dash readje nem ugyanaz). Ubuntu és Debian alatt a /bin/sh egy dash symlink, az interaktív login shell pedig bash.