Nowe posty

xx Debian 9.13 i dovecot 2.2.27 problem (0)
Dzisiaj o 15:36:56
xx Skrypty linux Prosze o pomoc (7)
Dzisiaj o 11:17:55
xx Strona o testach penetracyjnych, hackingu (23)
2022-01-22, 22:28:27
xx Ocena odpowiedzi - włączenie funkcji forum (1)
2022-01-18, 17:00:43
xx Instalacja Linux pop!os na laptopie bez systemu (10)
2022-01-13, 19:00:51
xx Stary Asus x71sl , nie startuje żaden linux (8)
2022-01-11, 19:00:52
xx HDMI - problem w poprawnym działaniu (0)
2022-01-11, 13:09:19
xx Search redirecting (4)
2022-01-08, 12:12:02
xx Jak to wersja (24)
2022-01-07, 00:22:09
xx Zadanie (1)
2022-01-06, 09:34:34

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

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2518
  • 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: 2518
  • 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: 2781
  • 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: 2518
  • 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.