linux problem z bash

Dominik Kiełtyka
  • Rejestracja:około 7 lat
  • Ostatnio:28 dni
  • Lokalizacja:Kraków
  • Postów:26
0

Cześć czy może ktoś wyjaśnić:

Przykład 1

Kopiuj
#!/bin/bash
ss="testasd/das/cc/sadas.asdasd"

p="${ss}" | sed "s/.*\///"
echo $p


Przykład 2

Kopiuj
#!/bin/bash
ss="testasd/das/cc/sadas.asdasd"

echo "${ss}" | sed "s/.*\///" 

Dlaczego przykald 2 wypisuje prawidłowy wynik, przykład 1 wypisuje pusty string, nie działa przypisanie do zmiennej. W jaki sposób można rozwiązać powyższy problem.

edytowany 3x, ostatnio: Dominik Kiełtyka
WhiteLightning
  • Rejestracja:prawie 14 lat
  • Ostatnio:około godziny
  • Postów:3183
0

A co ma wypisac jak ustawiasz zmienna ss a wypisujesz x ?

Dominik Kiełtyka
rzeczywiście wyżej się pomyliłem, poprawiłem błąd i dalej zamiast wypisywać sadas.asdasd wypisuje pusty string
Dominik Kiełtyka
  • Rejestracja:około 7 lat
  • Ostatnio:28 dni
  • Lokalizacja:Kraków
  • Postów:26
0

znalazłem rozwiązanie:

Kopiuj
#!/bin/bash
ss="testasd/das/cc/sadas.asdasd"

x=`echo "${ss}" | sed "s/.*\///"`
echo $x

Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:prawie 2 lata
  • Lokalizacja:Wrocław
  • Postów:13042
1

echo "${ss}" | sed "s/.*\///" możesz rozumieć jako (echo "${ss}") | (sed "s/.*\///") (nawiasy podane wyłącznie w celu zilustrowania).


edytowany 2x, ostatnio: Patryk27
WhiteLightning
  • Rejestracja:prawie 14 lat
  • Ostatnio:około godziny
  • Postów:3183
2

Spoko. Jak cos to masz jeszcze tr do zmiany znakow, czyli np:

Kopiuj
echo "testasd/das/cc/sadas.asdasd" | tr '//' "."

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.