Nowe posty

Autor Wątek: ${variable#*.}  (Przeczytany 2459 razy)

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2765
  • 1709
    • Zobacz profil
${variable#*.}
« dnia: 2014-11-04, 15:54:18 »
Zalozmy ze mam ciag
monika.damian.marek
W internenie znalazlem cos co pozwala mi uciac fragment od koncs ciagu,
czego nie potrafi cut.

 a=monika.damian.marek ; echo ${a#*.}
damian.marek
Dla mnie jest to bardzo wygodne poniewaz ciag monika moze byc dowolny i zawierac rowniez kropki.
Niestety jesli chce uzyskac ciag damian , musze pierw otrzymany wynik przypisac innej zmiennej
, a nastepnie uciac ciag w podobny sposob.
${a%.*}

Czy da sie te polecenia napisac jako jedno?
Czyli:
a=monika.damian.marek ; echo ${${a#*.}%.*}
damian
PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.

Offline roobal

  • Users
  • Guru
  • *****
  • Wiadomości: 2056
    • Zobacz profil
${variable#*.}
« Odpowiedź #1 dnia: 2014-11-05, 00:07:01 »
Próbowałeś w taki sposób?
a=monika.damian.marek
b=${a#*.}
echo ${b%.*}

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2765
  • 1709
    • Zobacz profil
${variable#*.}
« Odpowiedź #2 dnia: 2014-11-05, 00:53:15 »
Tak, wlasnie tego chcialem uniknac.
Dlaczego ? Bo wydaje mi sie za dlugie,
a moglo by tak pieknie wygladac jak zadanie z matematyki
$ a=$[4+$[3-5]] ; echo $a
2
Widac na liczbach to dziala, a na tym wyzej chyba sie nie da, albo nie umiem.
PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3056
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
${variable#*.}
« Odpowiedź #3 dnia: 2014-11-06, 08:41:02 »
1/ W ${ zagnieżdżanie też działa, ale wynik zagnieżdżonego ${ powinien zwrócić nazwę zmiennej, na której ma działać zewnętrzny ${. Np  ${${test}} zwróci zawartość zmiennej, której nazwa jest w zmiennej test. Czyli zupełnie co innego niż potrzebujesz.

2/ bash jest ogólnego przeznaczenia. Do orania stringów są inne języki, np PERL.
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2765
  • 1709
    • Zobacz profil
${variable#*.}
« Odpowiedź #4 dnia: 2014-11-06, 13:32:20 »
Ad 1/
Troche ciezko taka odpowiedz zrozumiec,
naprawde ciezko :D  ,
ale zakladam ze problem tkwi
ze wynik ${a#*.}  nie jest zmienna, a tylko zmienne moge wykorzystac w takich klamrach.

 a="monika.damian.marek" ; echo ${x=${a#*.}}
damian.marek
Ale dalej juz tym nie bede sie tym bawil bo to zle dziala,
mianowicie cokolwiek podstawie innego potem pod " a "  to otrzymuje to samo co na poczatku , czyli jakby ${x=${a#*.}}  byla stala ktora tylko raz pobrala dane od zmiennej " a " .
  Juz pomijam fakt ze nie wstawilem jeszcze " %.* "  do zmiennej x bo nie potrafie.

Dzieki za zainteresowanie :)
PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.