[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: pipe status bashizm



> From: Aleksey Cheusov
> Date: Wed, 06 Jun 2007 11:43:54 +0300
[]
> comp.unix.shell FAQ
>
> http://groups.google.com/group/comp.unix.shell/browse_thread/thread/5075fe6c19ddabb9/7a08dffe06316a29?lnk=st&q=comp.unix.shell+faq+pipe+status&rnum=7&hl=en#7a08dffe06316a29

Там пример в посикс шэле, а баги всё равно эвойдят:
|-*-
if [ "x$a" = 'x|' ]; then
|-*-

В шелах было время, когда пустота в строковых сравнениях неадекватно
работала. Впрочем в арифметических сравнениях она и по сей день
неадекватно работает (:

|-*-	       
olecom@flower:/tmp$ bash -c "test '' -eq 0 ; echo \$?"
bash: line 0: test: : integer expression expected
2
olecom@flower:/tmp$ dash -c "test '' -eq 0 ; echo \$?"
0
olecom@flower:/tmp$ busybox sh -c "test '' -eq 0 ; echo \$?"
0
olecom@flower:/tmp$
|-*-

Ага, баш всё таки более прошареный?

|-*-
olecom@flower:/tmp$ bash -c -v "test \"printf '\t'\" -eq 0 ; echo \$?"
test "  " -eq 0 ; echo $?
0
olecom@flower:/tmp$ bash -c -v "test \"printf ' '\" -eq 0 ; echo \$?"
test " " -eq 0 ; echo $?
0
olecom@flower:/tmp$ bash -c -v "test \"printf 'a'\" -eq 0 ; echo \$?"
test "a" -eq 0 ; echo $?
bash: line 0: test: a: integer expression expected
2
olecom@flower:/tmp$
|-*-

Что это, kит юникса -- shell -- десятилетия спустя ... работает с
фичами?

Кто-то может сказать, что перл в этом не виноват. Почему тогда перл,
не ваш "шел"?

Почему перл? Читая ту книжку я понял так, что набор юникс утилит всё
время сосал. Гну проект как-то пытался улучшить ситуацию, а дядя Ларри
пошёл по другому пути. Таким образом всё стало быдло-скрипто-кодерством
(ещё до жабаскрипта и пых-пыха :).
____



Reply to: