Kezdjuk Kenneth Almquist klasszikus SVR4 Bourne-shell kompatibilis implementaciojaval:
$ ./shift.netbsd-ash A B C
A B C
C
0
$ ./shift.netbsd-ash A B
A B
0
$ ./shift.netbsd-ash A
A
shift: can't shift that many
Nezzunk a public domain ksh-t:
$ ./shift.ksh A
A
./shift.ksh[3]: shift: nothing to shift
Ugyanazt kapjuk, csak a hibauzenet szovege mas.
mksh ugyanezt az eredmenyt produkalja, de az egyaltalan nem meglepo. :)
Akkor jojjon a ksh93:
$ ./shift.ksh93 A
A
./shift.ksh93[3]: shift: 2: bad number
Detto.
Akkor most kovetkezzek a nap poenja:
$ ./shift.bash A
A
A
0
OH HAI! A**ad.
Van meg egy csodabogar:
$ ./shift.zsh A
A
./shift.zsh:shift:3: shift count must be <= $#
A
0
Legalabb szol, hogy ezt nem kellene. ;P
Na akkor most melyik a jo eljaras es kinek a k***a a***t?
Konkluzio:
- Replaced blogja
- A hozzászóláshoz be kell jelentkezni
- 1364 megtekintés
Hozzászólások
nagyon raersz baratom :-)
- A hozzászóláshoz be kell jelentkezni
hat meg csak solarison sem neztem meg :P
-. . - -... ... -..
- A hozzászóláshoz be kell jelentkezni
Mielőtt másokat kritizálsz, keresd a hibát a saját script-edben. Az echo visszatérési értékét nézed, nem a shift-ét...
- A hozzászóláshoz be kell jelentkezni
tudom, nem is az volt a cel, hanem, hogy folyatja-e a vegrehajtast
-. . - -... ... -..
- A hozzászóláshoz be kell jelentkezni
Akkor szerinted az a jó, ha egy script eldobja magát egy ilyen hibás paraméter miatt? A kulturált módszer az, ha hibát ad vissza de tovább fut és hagyja, hogy lekezeld, nem?
- A hozzászóláshoz be kell jelentkezni
igen, ha hibas a program, akkor legyen feltunoen hibas es ne maradjon benne sunyiban hiba, ami, ha rendesen van implementalva, akkor mar reg kiderult volna.
glibc-nek van meg tipikusan ilyen karosan laza hibakezelese
/* NOTREACHED */
-. . - -... ... -..
- A hozzászóláshoz be kell jelentkezni
Filozófia kérdése. Az egyik elvárja, hogy előtte ellenőrizz, a másik azt is lehetővé teszi, hogy utólag kezeld, ha volt probléma. Hanyagság ellen nem véd.
Amúgy meg lustáknak ott a "set -e", ami főleg debugoláshoz jól jön.
- A hozzászóláshoz be kell jelentkezni
hat lattam mar par bugot, ami ilyen miatt volt :)
-. . - -... ... -..
- A hozzászóláshoz be kell jelentkezni
AIX 5.3 ksh88
# ./shift.aix-ksh88 A B C A B C C 0 # ./shift.aix-ksh88 A B A B 0 # ./shift.aix-ksh88 A A ./shift.aix-ksh88[3]: shift: 0403-009 The specified number is not valid for this command. #
- A hozzászóláshoz be kell jelentkezni
RTFM ....
shift [n]
The positional parameters from n+1 ... are renamed to $1 ....
Parameters represented by the numbers $# down to $#-n+1 are
unset. n must be a non-negative number less than or equal to
$#. If n is 0, no parameters are changed. If n is not given,
it is assumed to be 1. If n is greater than $#, the positional
parameters are not changed. The return status is greater than
zero if n is greater than $# or less than zero; otherwise 0.
- man bash
linux v2.6.22.14 + madwifi v0.9.3.3-mal itt
debian gnu/linux @ linux-2.6.22.15-pancs1
- A hozzászóláshoz be kell jelentkezni
akkor miert talalkozom egy rakas script-tel, ami eltaknyol minden nem bash shell-en?
azt viszont megkoszonnem, ha a posix specifikaciobol tudnad ugyanezt idezni
-. . - -... ... -..
- A hozzászóláshoz be kell jelentkezni