Strona 1 z 1

Pytanie o interpretację polecenia

: 31 października 2007, 17:05
autor: dracorp
Witam
Na początku taka linijka:

Kod: Zaznacz cały

$echo "siala baba mak" | sed 's/mak/brukiew/' ${PWD:+| sed 's/baba/chlop/'}
sed: nie można odczytać |: Nie ma takiego pliku ani katalogu
sed: nie można odczytać sed: Nie ma takiego pliku ani katalogu
sed: nie można odczytać s/baba/chlop/: Nie ma takiego pliku ani katalogu
Wg. mnie polecenie powinno się wykonać i na ekranie powinienem dostać siala chlop brukiew. Pytanie co robię źle?

: 31 października 2007, 19:18
autor: Gość
echo "siala baba mak" | sed 's/mak/brukiew/;s/baba/chlop/'


Pozdrawiam

: 31 października 2007, 19:32
autor: dracorp
[quote="Hagal"]echo "siala baba mak" | sed 's/mak/brukiew/]Ej chłopie żeś się rozpędził zbytnio, jakoś teraz dojrzały me oczy, że nie napisałem zbytnio czego oczekiwałem.
A po za tym Hagal w sed masz opcję -e.
Chodzi o ten fragment:

Kod: Zaznacz cały

sed '...' ${PWD:+| inne polecenie}
Jeśli zmienna PWD jest ustawiona to podstaw inne polecenie w potoku. Zgodnie z man bash "Podstawianie parametrów" powinno zadziałać.
Ale z jakiś powodów to co po :+ jest interpretowane jako argument poprzedniego polecenia a nie dalsza cześć linii poleceń.

ps.Wszystko to co napisałem to tylko przykład.

: 31 października 2007, 20:46
autor: Gość
dracorp pisze:A po za tym Hagal w sed masz opcję -e.
No co Ty nie powiesz :mrgreen:
dracorp pisze:Zgodnie z man bash "Podstawianie parametrów" powinno zadziałać.
Ale z jakiś powodów to co po :+ jest interpretowane jako argument poprzedniego polecenia a nie dalsza cześć linii poleceń.
No to jeszcze musisz poczytać.

Na razie masz na zachętę :

Kod: Zaznacz cały

echo "siala baba mak" | sed 's/mak/brukiew/]


Pozdrawiam

: 01 listopada 2007, 13:25
autor: wojtekz_
Hagal pisze:(...)
Na razie masz na zachętę :

Kod: Zaznacz cały

echo "siala baba mak" | sed 's/mak/brukiew/]
Pozdrawiam[/quote]
Tylko rodzaj czasownika się nie zgadza, musisz jeszcze nad tym popracować ;-)

Pozdrawiam

: 01 listopada 2007, 15:44
autor: Gość
[quote="wojtekz_"]Tylko rodzaj czasownika się nie zgadza, musisz jeszcze nad tym popracować ]
To już nie ja - sam tak chciał, to ma :-D

Pozdrawiam

: 05 listopada 2007, 14:18
autor: dracorp
[quote="Hagal"]echo "siala baba mak" | sed 's/mak/brukiew/]
Nie dopatrzyłem apostrofu i ;, z tym -e to wyskoczyłem :)
[quote="Hagal"]echo "siala baba mak" | sed 's/mak/brukiew/]
Mniej więcej o to chodzi. Głównie chodzi mi o wykonanie w potoku dodatkowego polecenia jeśli jakaś zmienna jest określona. I coś takiego

Kod: Zaznacz cały

polecenie ${ZMIENNA:+|inne polecenie}
za bardzo nie zadziała bo na początku jest interpretowana to jako dodatkowo opcja a dopiero później rozwijane to jest. Jedyne co może przejść to

Kod: Zaznacz cały

polecenie | ${zmienna:+inne polecenie}
ale należy jakoś zamknąć potok.

ps. Jakiś pomysł na przekierowanie stderr w potoku do innego polecenia (stdout normalnie działa)? Na razie mam

Kod: Zaznacz cały

polecenie  2>&1 > /dev/null | inne_polecenie
Tylko chciałbym nie przekierowywać stdout do /dev/null. Jakieś pomysły?