Nowe posty

xx Problem ze sterownikami. (5)
2024-04-13, 21:25:16
xx Instalacja xfce4 (2)
2024-04-13, 16:20:17
xx Serie kompilacji bez instalacji dla “emerge” w Gentoo (2)
2024-04-08, 18:40:04
xx Plasma 6 w Neonie ssie trochę mniej ... (17)
2024-04-05, 10:03:46
xx Problem z Linux Lite po instalacji (3)
2024-04-03, 14:23:40
xx Jak właczyć num locka przy starcie systemu debian 12? (12)
2024-04-02, 17:43:54
xx Brak dźwieku w systemie. (5)
2024-04-02, 16:13:41
xx Dystrybucja pod HP Omen (7)
2024-03-29, 11:33:05
xx [Poradnik] Wyszukiwanie Sterowników (2)
2024-03-27, 21:08:23
xx Ile pingwinów? (1)
2024-03-27, 08:59:24

Autor Wątek: ${variable#*.}  (Przeczytany 2455 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.