Strona 1 z 1

[+] Bash, RegExpr i polecenie grep do określenia warunku

: 12 września 2010, 21:00
autor: sector
Mam problem. Robię instalator do programu i potrzebuje zrobić w miarę uniwersalny plik setup.sh. Szukałem dziś chwile, ale nie mogę sobie poradzić z jedna rzeczą.

Chodzi o to, że przed instalacją sprawdzam poleceniem

Kod: Zaznacz cały

locale -a

czcionki systemowe. O ile w Debianie jest pl_PL.utf8 to np. w Mandrivie jest to pl_PL.UTF-8.

Mógłbym zrobić dwa warunki (if), jeden z UTF-8, a drugi na UTF8, jednak bardziej profesjonalnie i lepiej dla oka wygląda zastosowanie RegExpr. O ile z małymi i dużymi literami nie mam problemu to nie wiem jak zrobić to żeby, warunek akceptował "-". Chodzi mi o znak, który zastąpi 1 znak w Linuksie. Coś jak znak zapytania, który w Windows zastępuje 1 dowolny znak.

Zrobiłem tak:

Kod: Zaznacz cały

if locale -a | grep pl_PL.[u|U][t|T][f|F]8
A jak zrobić, żeby warunek również akceptował pl_PL.UTF-8? Mam nadzieje, że w miarę dobrze to wytłumaczyłem.

: 12 września 2010, 21:14
autor: lessmian2
A może by tak?

Kod: Zaznacz cały

grep -i 'pl_pl\.utf-\{0,1\}8'

: 12 września 2010, 21:14
autor: fnmirk
Według mnie to polecenie:

Kod: Zaznacz cały

locale -a
ma niewiele wspólnego z fontami (czcionkami) zainstalowanymi w systemie. Możesz wybrać określone kodowanie i je ustawić jako systemowe bez zainstalowanych czcionek - efektem tego jest wyświetlanie tzw. ,,krzaczków''.

: 12 września 2010, 21:38
autor: sector
lessmian2 pisze:A może by tak?

Kod: Zaznacz cały

grep -i 'pl_pl\.utf-\{0,1\}8'

A czy ten warunek zaakceptuje pl_pl.UTF-8 jak i pl.pl.UTF8? Niestety nie mogę teraz tego sprawdzić bo nie mam teraz dostępu do VMWare.

Edycja:
Sprawdziłem i działa. Wielkie dzięki!

Czy mógłbyś mi tylko napisać czemu w ten sposób a nie tak jak ja robiłem?

: 12 września 2010, 21:57
autor: lessmian2
Bo Twój sposób wydawał mi się dziwny? ;) Po co sprawdzać z osobna czy znak jest "duży" czy "mały" skoro można to w tym przypadku z czystym sumieniem zignorować? Wszak ważna jest treść a nie forma zapisu, a wyrażenie wygląda o niebo lepiej ;) Można by też zamienić fragment

Kod: Zaznacz cały

-\{0,1\}
(zero lub jedno wystąpienie znaku '-') na (zero lub więcej), ale ja lubię mieć dość dokładne wzorce ile i jakich znaków ma się pojawić w określonym miejscu. Ale to tylko moje widzi mi się i lekkie skrzywienie z perla ;)

: 13 września 2010, 11:43
autor: sector
Dzięki za pomoc! Poćwicze sobie podobne przykłady.