Van egy működő bash szkriptem, ennek ellenére mégis van a tárgyban említett hibaüzenet.
Sokáig észre sem vettem a clear parancs miatt.
Az alábbi sort sérelmezi.
until [ "0" != ${inputvar} ]; do
Vagy ! vagy = ?
A lényeg hogy kilépjen ha 0 karaktert kap inputnak. Ha valaki elmagyarázná, vagy linket küldene...
Örülnék.
- 2135 megtekintés
Hozzászólások
$ test "0" != ${inputvar}
bash: test: 0: unary operator expected
$ test "0" != "${inputvar}"
$
Egyszerű: biztosan üres/nincs beállítva az inputvar, tehát a ${inputvar}-ból semmi se lessz, azaz a [ "0" != ]; kerülne végrehajtásra ami ugye syntax error...
Tegyél " idézőjeleket köré és jó is lessz ;-)
- A hozzászóláshoz be kell jelentkezni
Érdekes. Így nem működik maga a szkript. Egyből vissza adta a promptot.
- A hozzászóláshoz be kell jelentkezni
until helyett while?
Esetleg!= helyett ==?
- A hozzászóláshoz be kell jelentkezni
Ez így jó lett.
while [ "0" != "${inputvar}" ]; do
- A hozzászóláshoz be kell jelentkezni
set -x
a script elején. És akkor tudod látni, wtf történik.
- A hozzászóláshoz be kell jelentkezni
Kissé lassú vagyok: hülyeséget írtam volna azzal, hogy vagy a hasonlítást cserélje ki, vagy az until-t?
- A hozzászóláshoz be kell jelentkezni
a setx mutatja hogy milyen commandokat csinal. latja a script futasakor a inputvar-be mi kerult. illetve latja azt is ha az feltetelnel kijon a hibas kifejezes (pl. [ "0" != ])
--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
- A hozzászóláshoz be kell jelentkezni
Jó, csak ha nem esik le neki, hogy az until akkor száll ki, amikor igazzá válik a feltétel, akkor cseszheti a debugot. :)
Én meg pár nap óta annyira le vagyok strapálódva, hogy csoda, ha nem nadrág nélkül ugrok le a boltba. :D
- A hozzászóláshoz be kell jelentkezni
A masik trukk ez:
until [ "x0" != "x${inputvar}" ]; do
Ha elekonkatenalsz egy x karaktert, mindenkepp lesz a jobb oldalon is valami..
--
Any A.I. smart enough to pass a Turing test is smart enough to know to fail it. -Ian McDonald
- A hozzászóláshoz be kell jelentkezni
De persze az x-et sem kötelező használni:
until [ "0" != "${inputvar}" ]; do
--
Debian Linux rulez... :D
RIP Ian Murdock
- A hozzászóláshoz be kell jelentkezni
- (torolve, nem vettem eszre a ""-t)
Update 2:
De azert lehetne egyertelmubb, hogy
-${inputvar}
+"${inputvar}"
- A hozzászóláshoz be kell jelentkezni
Ez volt a kiinduló pont. S ez produkálta a hibaüzenetet.
until [ "0" != ${inputvar} ]; do
HA idézőjelet adtam neki,
until [ "0" != "${inputvar}" ]; do
Akkor meg mintha le se futott volna. Egyből visszaadta a promptot.
A -x nem segített további információhoz.
Ez most működik:
while [ "0" != "${inputvar}" ]; do
- A hozzászóláshoz be kell jelentkezni
https://stackoverflow.com/questions/8287757/difference-between-while-an…
while [ 1 ]
==
until [ 0 ]
- A hozzászóláshoz be kell jelentkezni
Téged lehet, hogy nem...
De ha nem nagyon titkos, pastebin-re felmehetett volna a debug kimenet, mi meg annyival is okosabban tudtuk volna megszagérteni, mi törpént! ;-)
- A hozzászóláshoz be kell jelentkezni
+1
- A hozzászóláshoz be kell jelentkezni
Pedig szerintem már annyiszor leírtam:
"shell programozás első axióma:
nem írunk változóhivatkozást idézőjel nélkül"
(Gyakorlatban oly csekély számű alkalommal *kell* elhagyni az idézőjelet, cserébe oly sokszor szopat meg ha elhagyjuk ...)
Nyilván az sem segít, ha nem tudjuk a while / until közti különbséget.
=====
tl;dr
Egy-két mondatban leírnátok, hogy lehet ellopni egy bitcoin-t?
- A hozzászóláshoz be kell jelentkezni
+1, és hogy egy harmadik lehetőség is említésre kerüljön, egy ${inputvar:-1} is jó lehet szerintem, bár én ilyenkor (összehasonlítás) az x$var formát használom - rövidebb ugyanis :-)
- A hozzászóláshoz be kell jelentkezni
Nem tudom, hogy még mindig olyan jó-e, amikor a Cygwin a "Program Files"-ba akar másolni (idézőjelek nélkül persze).
- A hozzászóláshoz be kell jelentkezni