Linux за българи: Форуми

Програмиране => Общ форум => Темата е започната от: mrowcp в Aug 05, 2010, 18:57



Титла: дни от седмицата в пул ( bash script )
Публикувано от: mrowcp в Aug 05, 2010, 18:57
Абе уж е супер елементарно, но не ми идва :) на ум как да стане...
Искам да направя следното:

изброявам дните от седмицата Mon, Tue, Wed, Thu, Fri като пул и после с date +%a проверявам дали днешния ден отговаря на някои от изброените.Ако ДА прави едикакво си.

В момента ги броя супер тъпо с if [ $date = Mon ] || [ $date = Tue ] ... та ми се иска по съкратен начин.
Другото което се сещам е за [ $date != Sat ] || [ $date != Sun ]


Титла: Re: дни от седмицата в пул ( bash script )
Публикувано от: neter в Aug 05, 2010, 19:43
Ти на кое викаш "пул"? На масива или на въвеждането с read? И, ако става дума за read, кога трябва да ти каже "да" - когато въведеш текущия ден и цъкнеш ентър, или след като си въвел всички дни?


Титла: Re: дни от седмицата в пул ( bash script )
Публикувано от: mrowcp в Aug 05, 2010, 20:03
Ами на масива :) Променях някой неща и сега като прочетох видях, че е написано доста... кофти :)
Идеята е да се проверява кой ден от седмицата е и ако е от Понеделник до Петък да вади/върши нещо.


Титла: Re: дни от седмицата в пул ( bash script )
Публикувано от: b2l в Aug 05, 2010, 20:06
Код
GeSHi (Bash):
  1. [ $date != Sat ] || [ $date != Sun ]

Не трябва ли да е:

Код
GeSHi (Bash):
  1. [ $date != Sat ] && [ $date != Sun ]


Титла: Re: дни от седмицата в пул ( bash script )
Публикувано от: mrowcp в Aug 05, 2010, 20:15
Ами то в случая мисля е едно и също :)
Ако днес не е Събота и днес не е Неделя; тогава...
Ако днес не е Събота или днес не е Неделя; тогава...


Титла: Re: дни от седмицата в пул ( bash script )
Публикувано от: b2l в Aug 05, 2010, 20:44
1 || 0 = 1
0 || 1 = 1
Грешна ти е логиката според мен.


Титла: Re: дни от седмицата в пул ( bash script )
Публикувано от: mrowcp в Aug 05, 2010, 20:56
Ами като, че ли нещо го омотах и с && е по-добре :) , но пък при тест и по двата начина работи...


Титла: Re: дни от седмицата в пул ( bash script )
Публикувано от: neter в Aug 05, 2010, 21:02
Тъй като в bash няма вградена функция за търсене в масив, друг вариант е да обхождаш масива с цикъл. Пример:
Код
GeSHi (Bash):
  1. today=`date +%a`
  2. days=(Mon Tue Wed Thu Fri)
  3. for i in ${days[@]}; do
  4.    if [[ $i == $today ]]; then
  5. echo "da"
  6. break
  7.    fi
  8. done


Титла: Re: дни от седмицата в пул ( bash script )
Публикувано от: triel в Aug 05, 2010, 21:21
Или малко по-кратък, по-лек, но и по-труден за четене вариант:

Код
GeSHi (Bash):
  1. today=`date +%u`
  2. if [[ $today < 6 ]]; then
  3.    echo "da"
  4. fi


Титла: Re: дни от седмицата в пул ( bash script )
Публикувано от: mrowcp в Aug 05, 2010, 21:37
Мерси и на тримата.
Тъкмо се чудих дали има начин да се "извадят" дните от седмицата като числа, а не като имена :)


Титла: Re: дни от седмицата в пул ( bash script )
Публикувано от: remotex в Aug 06, 2010, 08:36
1. Има начин да се извадят като числа - както вече ти е отговорил triel
2. backtolife е по-прав
в твоя случай [ $date != Sat ] || [ $date != Sun ]
когато е събота то ще праща защото !=неделя а когато е неделя ще праща защото !=събота :-)
и плюс всички останали дни от седмицата т.е. така както си го дал ще праща всеки ден
...явно не си дочакал да тестваш през уикенда