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: podstawowy problem - skrypt bash  (Przeczytany 6472 razy)

stahoo23

  • Gość
podstawowy problem - skrypt bash
« dnia: 2006-05-27, 14:57:44 »
nie mialem nigdy do czynienie z kontami shell a chcialbym miec:)
1. czy mozna postawic podczas sesji na shellu np nicotine (soulseek dla linux)?
2. jesli tak, to co jest potrzebne oprocz konta shell?

gomath

  • Gość
podstawowy problem - skrypt bash
« Odpowiedź #1 dnia: 2006-05-27, 15:31:44 »
Poszukaj programow p2p, ktore udostepniaja interfejs tekstowy i/lub działają jako demony w tle. Nicotine do takich raczej nie należy, ale za to mldonkey tak (http://mldonkey.sourceforge.net/).

bruny

  • Gość
podstawowy problem - skrypt bash
« Odpowiedź #2 dnia: 2006-05-27, 02:54:47 »
Witam,
Mam prosty problem ze skryptem pod unix,
ma on za zadanie normalizacje daty, z reszta skryptu sobie poradze ale nie potrafie rozwiazac podstawowego problemu
tzn.
po poleceniu -> normdate dd/mm/rok
z tym ze znak / moze byc takze - , lub spacja,
a przy kazdym z tych 3 sposobow - te 3 wartosci zapisac do 3 roznych zmiennych ?
mysle ze to bardzo proste, ale kombinuje juz kilka godzin i nic mi sie nie udaje zdzialac. - moge uzyc sed, cut ,
sut mi dziala ale tylko z echo (znalazlem na tej stronie) a nie wiem jak do zmiennej.
Z gory dziekuje za pomoc.

xis

  • Gość
podstawowy problem - skrypt bash
« Odpowiedź #3 dnia: 2006-05-27, 10:02:32 »
Myślę, że - skoro znasz wielkości pól - najprościej będzie tak:

data=27/05/2006
dzien=`echo $data | cut -b -2`
miesiac=`echo $data | cut -b 4-5`
rok=`echo $data | cut -b 7-`

Powodzenia

bruny

  • Gość
podstawowy problem - skrypt bash
« Odpowiedź #4 dnia: 2006-05-27, 18:12:48 »
dzieki, w moim skrypcie moze zamiast miesiaca byc Mar, mar,
ale jest on na pierwszej pozycji  m/dd/rok, wiec rozwiazalem to tak,

data=27/05/2006
dzien=`echo $data | cut -d "-" -f1-1`

ale problem bedzie jak ktos wprowadzi / zamiast - ,
jest jakas opcja zeby w tej komendzie bylo / lub -  ??
z gory dzieki


xis

  • Gość
podstawowy problem - skrypt bash
« Odpowiedź #5 dnia: 2006-05-27, 19:52:41 »
2006-05-27 18:12:48 bruny napisał:

> dzieki, w moim skrypcie moze zamiast miesiaca byc Mar, mar,
 > ale jest on na pierwszej pozycji  m/dd/rok, wiec rozwiazalem to tak,
 >
 > data=27/05/2006
 > dzien=`echo $data | cut -d "-" -f1-1`
 >
 > ale problem bedzie jak ktos wprowadzi / zamiast - ,
 > jest jakas opcja zeby w tej komendzie bylo / lub -  ??
 > z gory dzieki
 >
 >
Właśnie to jest najmniej fajne w Twoim zagadnieniu :)
Gdyby delimiter był jeden i stały to wystarczyłoby użycie awk, albo cut w Twoim wykonaniu. Wydaje mi się, że najlepiej będzie jeśli datę przepuścisz przez wyrażenie regularne i wyciągniesz delimiter. Wtedy możesz zamiast '-' użyć $delimiter.
Do wykorzystania wyrażeń regularnych możesz użyć np. grep'a (z opcją -e).

Ostatecznie możesz czytać to tak jak ja to robiłem (czyli na sztywno 'trafiając' w dane pola), tyle, że zamiast wybierać znaki numerując je od początku, możesz czytać od końca (rok=cztery ostatnie znaki itd.).

Myślę, że to rugie rozwiązanie jest stabilniejsze ;)
Powodzenia

bruny

  • Gość
podstawowy problem - skrypt bash
« Odpowiedź #6 dnia: 2006-05-27, 20:51:43 »
uzylem ; nowy="$(echo $stary | tr '/' '-')"
i po klopocie, dzieki za pomoc i pozdrawiam

xis

  • Gość
podstawowy problem - skrypt bash
« Odpowiedź #7 dnia: 2006-05-28, 10:45:51 »
2006-05-27 20:51:43 bruny napisał:

> uzylem ; nowy="$(echo $stary | tr '/' '-')"
 > i po klopocie, dzieki za pomoc i pozdrawiam

Fakt :) Nie wpadłem na to, ze delimitery możesz sobie zmienić ;)
Możesz też użyć sed'a (jak to masz w zadaniu):
nowy=`echo $stary | sed s:/:-:g`
(to sprawi, że będziesz miał tylko jeden rodzaj delimitera: '-'),
a później 'lecieć' jak już pisałeś.
Gratuluję tego pomysłu :)