/etc/shrc.d
Maciek Pasternacki
maciekp w japhy.fnord.org
Nie, 9 Maj 2004, 22:54:08 CEST
On Setting Orange, Discord 57, 3170 YOLD, Adam Gorzkiewicz wrote:
>> #v+
>> japhy w lizard:~ % mkdir empty
>> 23:44 japhy w lizard:~ % for F in empty/*.sh; do [ -r $F ]
>> && echo cokolwiek; done 23:46 zsh: no matches found:
>> empty/*.sh
>> #v-
>>
>> > Co robimy? Przywracamy poprzednią pętelke, czy może tą obecną poprzedzamy
>> > jakimś ifem na obecność *.sh ?
>>
>> Raczej poprzedzić. Albo for i in `find /etc/shrc.d -name '*.sh'`
>> (mniej forków niż przy jednym ifie, a chyba nie planujemy tam nazw ze
>> spacjami tudzież innych, które trzeba szczególnie cytować).
>
> Hmm... właśnie zauważyłem, że zsh w każdej sytuacji krzyczy "no matches found"
> - obojetnie, czy dasz 'for i in' `find...`, `ls...` wtf.
>
> (~/rpm/SPECS)$ for i in `ls /etc/shrc.d/*.sh 2>/dev/null`; do echo $i; done
> zsh: no matches found: /etc/shrc.d/*.sh
> (~/rpm/SPECS)$
>
> Nie wiem - jezeli sie znasz na zsh to kombinuj - z pdksh i bashem tego
> problemu nie ma.
Wystarczy cytować gwiazdki. To, że bash i pdksh niecytowaną gwiazdkę
przekazują w niezmienionej formie (jako znaczek *) jeśli do wzorca nie
pasuje żaden napis, to jest misfeature, a w najlepszym przypadku
`accidental feature'.
Sprawdź jeszcze w zsh moją wersję (cytowaną wyżej, ale powtórzę w
pełniejszej formie), dokładnie przepisując wszystkie cytaty (one tam
nie są, żeby było ładniej) -- zobaczysz, że się nie będzie pluć:
for i in `find /etc/shrc.d -name '*.sh'`; do echo "- $i -"; done
Pozdrawiam,
--dżaf.
--
__ Maciek Pasternacki <maciekp w japhy.fnord.org> [ http://japhy.fnord.org/ ]
`| _ |_\ / { ...jaka jest pańska narodowość? -- Jestem pijakiem. Jestem
,|{-}|}| }\/ nieślubnym dzieckiem Bogarta i Marilyn Monroe. To ja zabiłem
\/ |____/ Laurę Palmer. To wszystko na ten temat. } ( M. Świetlicki ) -><-
Więcej informacji o liście dyskusyjnej pld-devel-pl