Vyreseno: Bash konstrukce [[ "$a" == "b" ]] - Linux OK, Cygwin KO???

Martin Proks proks na aerospace.fsik.cvut.cz
Pondělí Listopad 26 14:42:36 CET 2001


Zdravim,

Chyba byla u me. Ja predpokladal ze obecne bash == sh,
respektive ze "jakakoli" bash konstrukce projde v "jakemkoli"
POSIX shellu. Podminku [[ a == b ]] jsem tvoril ja jako pridany
test. Jak uz pan Pavel Kankovsky napsal, je to nestandardni
konstrukce, ted uz to vim.

Autoconf (version 2.13 z RH 7.1) jako takovy vytvari
korektni configure scripty. Pouziva vsude dusledne
if test ... ; then ...;, coz by snad melo byt dostatecne
univerzalni, alespon na linuxu RH 7.1 a cygwinu pod
WinNT a Win98 chodi. Nevim ale, co na to rekne napr. IRIX,
kde je tusim sh link na csh.

<noflame>
PS: ktery shell mohu povazovat za "syrovy" POSIX co funguje "vsude"
    (ne jen v bashi) a jehoz konstrukce budou zarucene fungovat
    i v csh, ksh, ....?
</noflame>

Dik za radu,
-- 
Martin Proks
mailto:proks na aerospace.fsik.cvut.cz
http://aerospace.fsik.cvut.cz/proks/


uhlar na fantomas.sk wrote:
> -> a) autoconf  vytvori #!/bin/sh script. V linuxu (RH) sh -> bash,
> ->   v cygwinu sh -> ash. V ash konstrukce [[ $a == "neco" ]] neprojde,
> ->   musel jsem nahradit konstrukcema if [ ${a} = "neco" ]; then ....; fi
> 
> tak to je jednosnacne chyba autoconfu. V ziadnom pripade NESMIE predpoklad
> ze sh = bash! a /bin/sh konstrukciu [[ ]] _nepozna_ a toto musi predpokladat
> kazdy kto tvori shell skripty. Ak potrebuje bash, nech pouziva /bin/bash.


Další informace o konferenci Linux