Pytanie o interpretacj

Wszystko Off Topic
dracorp
Posty: 60
Rejestracja: 04 kwietnia 2007, 17:43
Lokalizacja: Koszalin

Pytanie o interpretację polecenia

Post 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?
Gość

Post autor: Gość »

echo "siala baba mak" | sed 's/mak/brukiew/;s/baba/chlop/'


Pozdrawiam
dracorp
Posty: 60
Rejestracja: 04 kwietnia 2007, 17:43
Lokalizacja: Koszalin

Post 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.
Gość

Post 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
wojtekz_
Beginner
Posty: 337
Rejestracja: 13 marca 2007, 16:50
Lokalizacja: Warszawa

Post 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
Gość

Post 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
dracorp
Posty: 60
Rejestracja: 04 kwietnia 2007, 17:43
Lokalizacja: Koszalin

Post 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?
ODPOWIEDZ