Dariusz Rodziewicz

Dariusz Rodziewicz Specjalista
Informatyk ds.
Systemów Medycznych,
Przedsięb...

Temat: Zmienne w powłoce

Witam

Mam ustawione skrypty, które są automatycznie wykonywane. Wszystko działa super, do czasu, kiedy w zmiennej nie pojawi się wartość np. 08 (nr tygodnia - date +%V). Pytanie, jak pobrać jednoznakowy nr tygodnia (o ile jest to początek roku) lub jak skrócić wartość zmienne do jednego znaku?

Pozdrawiam

Darek

konto usunięte

Temat: Zmienne w powłoce

Dariusz R.:
np. 08 (nr tygodnia - date +%V). Pytanie, jak pobrać jednoznakowy nr tygodnia (o ile jest to początek roku) lub jak skrócić wartość zmienne do jednego znaku?


date +"%V" | sed "s/^0//"

p.s. Pewnie można to jakoś lepiej zrobić ;)
Dariusz Rodziewicz

Dariusz Rodziewicz Specjalista
Informatyk ds.
Systemów Medycznych,
Przedsięb...

Temat: Zmienne w powłoce

Dzięki, o to chodziło :-)

Można ten problem rozwiązać jeszcze inaczej:

nrtyg=${nrtyg:1}

Podane rozwiązanie umożliwia usuwanie zbędnych znaków ze zmiennej.
Znalezione w sieci, może jeszcze komuś się przyda:

${parameter:-defaultValue} Get default shell variables value
${parameter:=defaultValue} Set default shell variables value
${parameter:?"Error Message"} Display an error message if parameter is not set
${#var} Find the length of the string
${var%pattern} Remove from shortest rear (end) pattern
${var%%pattern} Remove from longest rear (end) pattern
${var:num1:num2} Substring
${var#pattern} Remove from shortest front pattern
${var##pattern} Remove from longest front pattern
${var/pattern/string} Find and replace (only replace first occurrence)
${var//pattern/string} Find and replace all occurrences

konto usunięte

Temat: Zmienne w powłoce

Dariusz, mój immienniku, fajny link do artykułu, dużo ciekawostek, jednak to:
 nrtyg=${nrtyg:1}  

nie zadziała. To coś usuwa jeden znak z przodu (bez względu na to jaki to znak). Jak będzie 28 tydzień to usunie 2. Lepiej jak już to coś tw tym stylu:

nrtyg=${nrtyg/#0}

Aczkolwiek też możesz się zastanowić czy wolisz korzystać z wbudowanych poleceń shella (mogą wystąpić problemy przy migracji) czy zewnętrznych komend (mogą być problemy bezpieczeństwa).
Dariusz Rodziewicz

Dariusz Rodziewicz Specjalista
Informatyk ds.
Systemów Medycznych,
Przedsięb...

Temat: Zmienne w powłoce

Hej

Oczywiści, że nie korzystam wyłącznie z

nrtyg=${nrtyg:1}

Przewidziałem wspomniany przez Cibie przypadek - dzięki, że o nim mówisz. Do tego dodałem warunek.
Jest też inne rozwiązanie, z którego skorzystałem:

date +%-V

Z poleceń shella korzystam w celu wykonania kopii bezpieczeństwa, która, zdarza się, że jest bardziej rozbudowana.

Pozdrawiam

Darek

konto usunięte

Temat: Zmienne w powłoce

Dariusz R.:
 date +%-V 
Tak, wygląda, że to chyba będzie działać ok w listopadzie też ;)

date --date=@500000000 +"%d.%m.%Y %-V"
05.11.1985 45

Aczkolwiek zawsze można w tym celu napisać specjalną klasę w javie ;)



Wyślij zaproszenie do