abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 13:33 | Nová verze

    Vyšlo Pharo 12.0, programovací jazyk a vývojové prostředí s řadou pokročilých vlastností. Krom tradiční nadílky oprav přináší nový systém správy ladících bodů, nový způsob definice tříd, prostor pro objekty, které nemusí procházet GC a mnoho dalšího.

    Pavel Křivánek | Komentářů: 0
    dnes 04:55 | Zajímavý software

    Microsoft zveřejnil na GitHubu zdrojové kódy MS-DOSu 4.0 pod licencí MIT. Ve stejném repozitáři se nacházejí i před lety zveřejněné zdrojové k kódy MS-DOSu 1.25 a 2.0.

    Ladislav Hagara | Komentářů: 21
    včera 17:33 | Nová verze

    Canonical vydal (email, blog, YouTube) Ubuntu 24.04 LTS Noble Numbat. Přehled novinek v poznámkách k vydání a také příspěvcích na blogu: novinky v desktopu a novinky v bezpečnosti. Vydány byly také oficiální deriváty Edubuntu, Kubuntu, Lubuntu, Ubuntu Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu MATE, Ubuntu Studio, Ubuntu Unity a Xubuntu. Jedná se o 10. LTS verzi.

    Ladislav Hagara | Komentářů: 13
    včera 14:22 | Komunita

    Na YouTube je k dispozici videozáznam z včerejšího Czech Open Source Policy Forum 2024.

    Ladislav Hagara | Komentářů: 2
    včera 13:22 | Nová verze

    Fossil (Wikipedie) byl vydán ve verzi 2.24. Jedná se o distribuovaný systém správy verzí propojený se správou chyb, wiki stránek a blogů s integrovaným webovým rozhraním. Vše běží z jednoho jediného spustitelného souboru a uloženo je v SQLite databázi.

    Ladislav Hagara | Komentářů: 0
    včera 12:44 | Nová verze

    Byla vydána nová stabilní verze 6.7 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 124. Přehled novinek i s náhledy v příspěvku na blogu. Vypíchnout lze Spořič paměti (Memory Saver) automaticky hibernující karty, které nebyly nějakou dobu používány nebo vylepšené Odběry (Feed Reader).

    Ladislav Hagara | Komentářů: 0
    včera 04:55 | Nová verze

    OpenJS Foundation, oficiální projekt konsorcia Linux Foundation, oznámila vydání verze 22 otevřeného multiplatformního prostředí pro vývoj a běh síťových aplikací napsaných v JavaScriptu Node.js (Wikipedie). V říjnu se verze 22 stane novou aktivní LTS verzí. Podpora je plánována do dubna 2027.

    Ladislav Hagara | Komentářů: 0
    včera 04:22 | Nová verze

    Byla vydána verze 8.2 open source virtualizační platformy Proxmox VE (Proxmox Virtual Environment, Wikipedie) založené na Debianu. Přehled novinek v poznámkách k vydání a v informačním videu. Zdůrazněn je průvodce migrací hostů z VMware ESXi do Proxmoxu.

    Ladislav Hagara | Komentářů: 0
    včera 04:11 | Nová verze

    R (Wikipedie), programovací jazyk a prostředí určené pro statistickou analýzu dat a jejich grafické zobrazení, bylo vydáno ve verzi 4.4.0. Její kódové jméno je Puppy Cup.

    Ladislav Hagara | Komentářů: 0
    24.4. 22:44 | IT novinky

    IBM kupuje společnost HashiCorp (Terraform, Packer, Vault, Boundary, Consul, Nomad, Waypoint, Vagrant, …) za 6,4 miliardy dolarů, tj. 35 dolarů za akcii.

    Ladislav Hagara | Komentářů: 14
    KDE Plasma 6
     (73%)
     (9%)
     (2%)
     (16%)
    Celkem 789 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

    Dotaz: BASH - potrebujem ziskat week of the month do premenej

    cbrpnk avatar 23.4.2022 22:28 cbrpnk | skóre: 8 | blog: bl0gium
    BASH - potrebujem ziskat week of the month do premenej
    Přečteno: 688×
    Zdravim, v BASHi - potrebujem ziskat week of the month do premenej (1 az 4 aktualneho mesiaca). Ako na to?

    Řešení dotazu:


    Odpovědi

    Jendа avatar 23.4.2022 22:59 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: BASH - potrebujem ziskat week of the month do premenej
    No v nejhorším iterovat od jedničky po aktuální den a počítat neděle (nebo jak je definováno že začal týden). Přes date --date 2021-04-23 +%u
    24.4.2022 00:24 z_sk | skóre: 34 | blog: analyzy
    Rozbalit Rozbalit vše Re: BASH - potrebujem ziskat week of the month do premenej
    Vyuzi 2 vlastnosti:
    • Týždeň ma vždy 7 dní.
    • Prvý deň mesiaca určuje posun a zmenu poradia (inkremenciu) týždňa.
    debian.plus@protonmail.com
    24.4.2022 00:54 jejda | skóre: 23 | blog: jejda
    Rozbalit Rozbalit vše Re: BASH - potrebujem ziskat week of the month do premenej
    Napadlo mě vyparsovat výstup programu cal.
    cal | tail -n6 | grep -nw $(date +%e) | cut -d: -f1
    Akorát to teda nejsou týdny 1-4 ale 1-6, protože týden má jenom 7 dní a né každý měsíc začíná v pondělí.
    24.4.2022 01:27 z_sk | skóre: 34 | blog: analyzy
    Rozbalit Rozbalit vše Re: BASH - potrebujem ziskat week of the month do premenej
    Asi zle, lebo Ti týždeň začína v nedeľu, a nie v pondelok.
    debian.plus@protonmail.com
    k3dAR avatar 24.4.2022 01:50 k3dAR | skóre: 62
    Rozbalit Rozbalit vše Re: BASH - potrebujem ziskat week of the month do premenej
    tak "ncal -1 -b -M" by mel od pondelka, ale spis mi unika proc:
    "cal | grep 24" vrati prazdno a ne radek s dnem 24 :-)
    porad nemam telo, ale uz mam hlavu... nobody
    k3dAR avatar 24.4.2022 01:52 k3dAR | skóre: 62
    Rozbalit Rozbalit vše Re: BASH - potrebujem ziskat week of the month do premenej
    aha, ridici znaky pro tucne, takze jeste pridat parametr "neotucnuj dnesni den" :-)
    ncal -1 -b -M -h | tail -n6 | grep -nw $(date +%e) | cut -d: -f1
    porad nemam telo, ale uz mam hlavu... nobody
    k3dAR avatar 24.4.2022 01:56 k3dAR | skóre: 62
    Rozbalit Rozbalit vše Re: BASH - potrebujem ziskat week of the month do premenej
    btw: ja chtel puvodne nadhodit "$cislo_tydne_dnes - $cislo_tydne_1_v_tomto_mesici" ale nedoslo mi ze prvni dny v roku (pokud 1.1. neni pondeli), maji cislo tydne bud 52 (+%V) nebo 00 (+%W), takze by se muselo to jeste doosetrit pro leden :-)
    porad nemam telo, ale uz mam hlavu... nobody
    24.4.2022 01:59 jejda | skóre: 23 | blog: jejda
    Rozbalit Rozbalit vše Re: BASH - potrebujem ziskat week of the month do premenej
    No to záleží od toho, jakou máš locale LC_TIME. Jestli máš americkou en_US tak ano, v americe začíná týden v neděli. Já používám en_GB protože mě to americké formátování připadá úchylné ale zároveň chcu systém v angličtině. Jestli má locale česky, slovensky nebo en_GB tak mu týden začíná v pondělí.
    k3dAR avatar 24.4.2022 03:45 k3dAR | skóre: 62
    Rozbalit Rozbalit vše Re: BASH - potrebujem ziskat week of the month do premenej
    a aktualni den ti grepnout jde?
    porad nemam telo, ale uz mam hlavu... nobody
    24.4.2022 04:27 jejda | skóre: 23 | blog: jejda
    Rozbalit Rozbalit vše Re: BASH - potrebujem ziskat week of the month do premenej
    Nějak nechápu na co se ptáš. cal vypíše toto:
    cal
         April 2022
    Mo Tu We Th Fr Sa Su
                 1  2  3
     4  5  6  7  8  9 10
    11 12 13 14 15 16 17
    18 19 20 21 22 23 24
    25 26 27 28 29 30
    
    
    cal | grep -wo $(date +%e)
    24
    
    cal | tail -n6 | grep -wn $(date +%e)
    4:18 19 20 21 22 23 24
    
    Nevím ale jaký je rozdíl mezi cal a ncal. Ten druhý nemám vůbec nainstalovaný.
    Jendа avatar 24.4.2022 06:15 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: BASH - potrebujem ziskat week of the month do premenej
    V Debianu implementace cal nedávno nějak měnili, možná máte jinou verzi / jiné alternatives.
    k3dAR avatar 24.4.2022 13:22 k3dAR | skóre: 62
    Rozbalit Rozbalit vše Re: BASH - potrebujem ziskat week of the month do premenej
    v Xubuntu 20.04 "cal" zobrazuje zvyraznene aktualni den ;-)
    ls -l $(which cal)
    lrwxrwxrwx 1 root root 4 bře 30  2020 /usr/bin/cal -> ncal
    
    dpkg -S bin/cal | grep 'cal$'
    bsdmainutils: /usr/bin/cal
    
    dpkg -l | grep bsdmainutils
    ii  bsdmainutils    11.1.2ubuntu3    amd64    collection of more utilities from FreeBSD
    
    man cal
    CAL(1)                                                                                                 BSD General Commands Manual                                                                                                CAL(1)
    
    NAME
         cal, ncal — displays a calendar and the date of Easter
    
    SYNOPSIS
         cal [-31jy] [-A number] [-B number] [-d yyyy-mm] [[month] year]
         cal [-31j] [-A number] [-B number] [-d yyyy-mm] -m month [year]
         ncal [-C] [-31jy] [-A number] [-B number] [-d yyyy-mm] [[month] year]
         ncal [-C] [-31j] [-A number] [-B number] [-d yyyy-mm] -m month [year]
         ncal [-31bhjJpwySM] [-A number] [-B number] [-H yyyy-mm-dd] [-d yyyy-mm] [-s country_code] [[month] year]
         ncal [-31bhJeoSM] [-A number] [-B number] [-d yyyy-mm] [year]
    
    DESCRIPTION
         The cal utility displays a simple calendar in traditional format and ncal offers an alternative layout, more options and the date of Easter.  The new format is a little cramped but it makes a year fit on a 25x80 terminal.  If
         arguments are not specified, the current month is displayed.
    
         The options are as follows:
    
         -h      Turns off highlighting of today.
    
         -J      Display Julian Calendar, if combined with the -o option, display date of Orthodox Easter according to the Julian Calendar.
    
         -e      Display date of Easter (for western churches).
    
         -j      Display Julian days (days one-based, numbered from January 1).
    
         -m month
                 Display the specified month.  If month is specified as a decimal number, appending ‘f’ or ‘p’ displays the same month of the following or previous year respectively.
    
         -o      Display date of Orthodox Easter (Greek and Russian Orthodox Churches).
    
         -p      Print the country codes and switching days from Julian to Gregorian Calendar as they are assumed by ncal.  The country code as determined from the local environment is marked with an asterisk.
    
         -s country_code
                 Assume the switch from Julian to Gregorian Calendar at the date associated with the country_code.  If not specified, ncal tries to guess the switch date from the local environment or falls back to September 2, 1752.
                 This was when Great Britain and her colonies switched to the Gregorian Calendar.
    
         -w      Print the number of the week below each week column.
    
         -y      Display a calendar for the specified year. This option is implied when a year but no month are specified on the command line.
    
         -3      Display the previous, current and next month surrounding today.
    
         -1      Display only the current month. This is the default.
    
         -A number
                 Months to add after. The specified number of months is added to the end of the display. This is in addition to any date range selected by the -y, -3, or -1 options. For example, “cal -y -B2 -A2” shows everything from
                 November of the previous year to February of the following year. Negative numbers are allowed, in which case the specified number of months is subtracted. For example, “cal -y -B-6” shows July to December. And “cal
                 -A11” simply shows the next 12 months.
    
         -B number
                 Months to add before. The specified number of months is added to the beginning of the display. See -A for examples.
    
         -C      Completely switch to cal mode. For cal like output only, use -b instead.
    
         -N      Switch to ncal mode.
    
         -d yyyy-mm
                 Use yyyy-mm as the current date (for debugging of date selection).
    
         -H yyyy-mm-dd
                 Use yyyy-mm-dd as the current date (for debugging of highlighting).
    
         -M      Weeks start on Monday.
    
         -S      Weeks start on Sunday.
    
         -b      Use oldstyle format for ncal output.
    
         A single parameter specifies the year (1–9999) to be displayed; note the year must be fully specified: “cal 89” will not display a calendar for 1989.  Two parameters denote the month and year; the month is either a number be‐
         tween 1 and 12, or a full or abbreviated name as specified by the current locale.  Month and year default to those of the current system clock and time zone (so “cal -m 8” will display a calendar for the month of August in the
         current year).
    
         Not all options can be used together. For example, the options -y, -3, and -1 are mutually exclusive. If inconsistent options are given, the later ones take precedence over the earlier ones.
    
         A year starts on January 1.
    
         Highlighting of dates is disabled if stdout is not a tty.
    
    SEE ALSO
         calendar(3), strftime(3)
    
    HISTORY
         A cal command appeared in Version 5 AT&T UNIX.  The ncal command appeared in FreeBSD 2.2.6.  The output of the cal command is supposed to be bit for bit compatible to the original Unix cal command, because its output is pro‐
         cessed by other programs like CGI scripts, that should not be broken. Therefore it will always output 8 lines, even if only 7 contain data. This extra blank line also appears with the original cal command, at least on Solaris 8
    
    AUTHORS
         The ncal command and manual were written by Wolfgang Helbig <helbig@FreeBSD.org>.
    
    BUGS
         The assignment of Julian–Gregorian switching dates to country codes is historically naive for many countries.
    
         Not all options are compatible and using them in different orders will give varying results.
    
    BSD                                                                                                          March 14, 2009                                                                                                          BSD
    
    porad nemam telo, ale uz mam hlavu... nobody
    24.4.2022 15:07 jejda | skóre: 23 | blog: jejda
    Rozbalit Rozbalit vše Re: BASH - potrebujem ziskat week of the month do premenej
    Příloha:
    Aha, archlinux má teda jinačí cal.
    cal -V
    cal from util-linux 2.38
    Zvláštní je, že ten aktuální den mi to zvýrazňuje taky (otočí barvy), ale grepnout to jde bez problému.
    Jendа avatar 24.4.2022 06:13 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: BASH - potrebujem ziskat week of the month do premenej
    Jestli chceš rozumné formátování třeba v ls (protože jinak to vypisuje někdy den a čas pro nedávné soubory, pak měsíc a den pro soubory asi tak do roka a kdovíco pro starší) a tak, tak
    export TIME_STYLE="+%Y-%m-%d %H:%M:%S"
    chvíli jsem používal nějaké en_DK locales kvůli tomu, ale mělo to nějaké jiné problémy. Obecně najít rozumné nastavení pro čas, čísla (desetinná tečka), papír (A4) a řazení (collate) je quest který jsem ještě nedokončil, aktuálně používám LC_COLLATE a LC_MESSAGES C, zbytek cs_CZ. Ale některé aplikace to stejně ignorují.
    24.4.2022 16:13 jejda | skóre: 23 | blog: jejda
    Rozbalit Rozbalit vše Re: BASH - potrebujem ziskat week of the month do premenej
    Jojo TIME_STYLE používám. A řazení českých znaků s diakritikou mi záhadně funguje i s anglickým en_GB locales.
    locale
    LANG=en_GB.UTF-8
    LC_CTYPE="en_GB.UTF-8"
    LC_NUMERIC="en_GB.UTF-8"
    LC_TIME="en_GB.UTF-8"
    LC_COLLATE="en_GB.UTF-8"
    LC_MONETARY="en_GB.UTF-8"
    LC_MESSAGES="en_GB.UTF-8"
    LC_PAPER="en_GB.UTF-8"
    LC_NAME="en_GB.UTF-8"
    LC_ADDRESS="en_GB.UTF-8"
    LC_TELEPHONE="en_GB.UTF-8"
    LC_MEASUREMENT="en_GB.UTF-8"
    LC_IDENTIFICATION="en_GB.UTF-8"
    LC_ALL=
    
    touch 0 1 2 3 a A b B c C č Č d D ď Ď e E ě Ě é É f F
    
    ls -l
    total 0
    -rw-r--r-- 1 bb users 0 2022-04-24 13:46:48 0
    -rw-r--r-- 1 bb users 0 2022-04-24 13:46:48 1
    -rw-r--r-- 1 bb users 0 2022-04-24 13:46:48 2
    -rw-r--r-- 1 bb users 0 2022-04-24 13:46:48 3
    -rw-r--r-- 1 bb users 0 2022-04-24 13:46:48 a
    -rw-r--r-- 1 bb users 0 2022-04-24 13:46:48 A
    -rw-r--r-- 1 bb users 0 2022-04-24 13:46:48 b
    -rw-r--r-- 1 bb users 0 2022-04-24 13:46:48 B
    -rw-r--r-- 1 bb users 0 2022-04-24 13:46:48 c
    -rw-r--r-- 1 bb users 0 2022-04-24 13:46:48 C
    -rw-r--r-- 1 bb users 0 2022-04-24 13:46:48 č
    -rw-r--r-- 1 bb users 0 2022-04-24 13:46:48 Č
    -rw-r--r-- 1 bb users 0 2022-04-24 13:46:48 d
    -rw-r--r-- 1 bb users 0 2022-04-24 13:46:48 D
    -rw-r--r-- 1 bb users 0 2022-04-24 13:46:48 ď
    -rw-r--r-- 1 bb users 0 2022-04-24 13:46:48 Ď
    -rw-r--r-- 1 bb users 0 2022-04-24 13:46:48 e
    -rw-r--r-- 1 bb users 0 2022-04-24 13:46:48 E
    -rw-r--r-- 1 bb users 0 2022-04-24 13:46:48 é
    -rw-r--r-- 1 bb users 0 2022-04-24 13:46:48 É
    -rw-r--r-- 1 bb users 0 2022-04-24 13:46:48 ě
    -rw-r--r-- 1 bb users 0 2022-04-24 13:46:48 Ě
    -rw-r--r-- 1 bb users 0 2022-04-24 13:46:48 f
    -rw-r--r-- 1 bb users 0 2022-04-24 13:46:48 F
    
    TIME_STYLE=locale ls -l
    total 0
    -rw-r--r-- 1 bb users 0 Apr 24 13:46 0
    -rw-r--r-- 1 bb users 0 Apr 24 13:46 1
    -rw-r--r-- 1 bb users 0 Apr 24 13:46 2
    -rw-r--r-- 1 bb users 0 Apr 24 13:46 3
    -rw-r--r-- 1 bb users 0 Apr 24 13:46 a
    -rw-r--r-- 1 bb users 0 Apr 24 13:46 A
    -rw-r--r-- 1 bb users 0 Apr 24 13:46 b
    -rw-r--r-- 1 bb users 0 Apr 24 13:46 B
    -rw-r--r-- 1 bb users 0 Apr 24 13:46 c
    -rw-r--r-- 1 bb users 0 Apr 24 13:46 C
    -rw-r--r-- 1 bb users 0 Apr 24 13:46 č
    -rw-r--r-- 1 bb users 0 Apr 24 13:46 Č
    -rw-r--r-- 1 bb users 0 Apr 24 13:46 d
    -rw-r--r-- 1 bb users 0 Apr 24 13:46 D
    -rw-r--r-- 1 bb users 0 Apr 24 13:46 ď
    -rw-r--r-- 1 bb users 0 Apr 24 13:46 Ď
    -rw-r--r-- 1 bb users 0 Apr 24 13:46 e
    -rw-r--r-- 1 bb users 0 Apr 24 13:46 E
    -rw-r--r-- 1 bb users 0 Apr 24 13:46 é
    -rw-r--r-- 1 bb users 0 Apr 24 13:46 É
    -rw-r--r-- 1 bb users 0 Apr 24 13:46 ě
    -rw-r--r-- 1 bb users 0 Apr 24 13:46 Ě
    -rw-r--r-- 1 bb users 0 Apr 24 13:46 f
    -rw-r--r-- 1 bb users 0 Apr 24 13:46 F
    
    Den má hezky 24 hodin a né 12 AM PM chaos jak v americe. Datum to má den/měsíc/rok a ne měsíc/den/rok a podobné zvěrstva. Akorát koš v thunaru se nejmenuje trash ale Wastebasket :-D
    xxxs avatar 24.4.2022 14:58 xxxs | skóre: 25 | blog: vetvicky
    Rozbalit Rozbalit vše Re: BASH - potrebujem ziskat week of the month do premenej
    prvy tyzden pocitas podla konvencie, kde je prvy stvrtok, alebo podla toho, kde je prvy den v mesiaci?

    toto dava aktualny week, podel si mesiacmi:

    date +%W
    xxxs avatar 24.4.2022 15:01 xxxs | skóre: 25 | blog: vetvicky
    Rozbalit Rozbalit vše Re: BASH - potrebujem ziskat week of the month do premenej
    ooops. tak nepodel...
    xxxs avatar 24.4.2022 15:06 xxxs | skóre: 25 | blog: vetvicky
    Rozbalit Rozbalit vše Re: BASH - potrebujem ziskat week of the month do premenej
    mozes delit 4 a podla zvysku sa ti opakuje.
    24.4.2022 21:29 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: BASH - potrebujem ziskat week of the month do premenej

    Sice si to nezasloužíš. Ale budiž…

    ~$ DATUM=2022-02-24
    ~$ DATUM=$((($(date +%-d --date=$DATUM)-1)/7+1))
    ~$ echo $DATUM
    ~$ 4
    
    xkucf03 avatar 24.4.2022 22:55 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: BASH - potrebujem ziskat week of the month do premenej
    Tam bude potřeba zakomponovat ještě aktuální den v týdnu, ne?
    $ den_v_mesici() { echo $((($(date +%-d --date=$1)-1)/7+1)); }
    
    $ for ((i=1;i<=31;i++)); do datum="2022-04-$i"; echo -n "$datum: "; den_v_mesici $datum; done                                                                                                                                     
    2022-04-1: 1                                                                                                                                                                                                                                 
    2022-04-2: 1                                                                                                                                                                                                                                 
    2022-04-3: 1                                                                                                                                                                                                                                 
    2022-04-4: 1                                                                                                                                                                                                                                 
    2022-04-5: 1                                                                                                                                                                                                                                 
    2022-04-6: 1                                                                                                                                                                                                                                 
    2022-04-7: 1
    2022-04-8: 2
    2022-04-9: 2
    2022-04-10: 2
    2022-04-11: 2
    2022-04-12: 2
    2022-04-13: 2
    2022-04-14: 2
    2022-04-15: 3
    2022-04-16: 3
    2022-04-17: 3
    2022-04-18: 3
    2022-04-19: 3
    2022-04-20: 3
    2022-04-21: 3
    2022-04-22: 4
    2022-04-23: 4
    2022-04-24: 4
    2022-04-25: 4
    2022-04-26: 4
    2022-04-27: 4
    2022-04-28: 4
    2022-04-29: 5
    2022-04-30: 5
    2022-04-31: date: chybné datum: „2022-04-31“
    1
    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    24.4.2022 23:30 Want
    Rozbalit Rozbalit vše Re: BASH - potrebujem ziskat week of the month do premenej
    Nevím co má za data, a co s nimi chce dělat. Navíc mi přijde tenhle požadavek poněkud ošemetný. Zrovna ten duben. Začínal v pátek. Co je první týden v měsíci? Týden na který připadnul ten víkend? Nebo týden, na který připadlo první pondělí?

    Prostě základ má a dál už si to musí přiohnout podle sebe. RTFM.
    Řešení 1× (Gréta)
    26.4.2022 22:08 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: BASH - potrebujem ziskat week of the month do premenej

    Zaprvé, je to 1 až 6, nikoliv 1 až 4.

    Zadruhé, už zase se to tady hemží všemi možnými programy, jenom ne Bashem. :-(

    Zatřetí, úkol se dá chápat dvěma různými způsoby:

    1. počet celých uplynulých týdnů od začátku měsíce plus 1, tedy například pokud měsíc začal středou, následující neděle, pondělí i úterý dají výsledek 1 a po nich následující středa dá výsledek 2. Tohle bude v rozsahu 1 až 5.
    2. počet týdnů začínajících pondělkem, které se (dosud) překrývaly s tímto měsícem, tedy například pokud měsíc začal středou, následující neděle dá (ještě) výsledek 1, zatímco po ní následující pondělí a úterý už dají výsledek 2. Tohle bude v rozsahu 1 až 6.

    První interpretace úkolu (v Bashi, nikoliv v pěti jiných programech!):

    declare -i week_of_the_month
    week_of_the_month="$(((10#$(printf '%(%d)T' "$((EPOCHSECONDS))") + 6) / 7))"
    

    Druhá interpretace úkolu (opět v Bashi):

    week_of_the_month() {
      local -i epoch {current,first}_week day_offset
      epoch=EPOCHSECONDS
      current_week=$((10#$(printf '%(%W)T' "$((epoch))")))
      day_offset=$((10#$(printf '%(%d)T' "$((epoch))") - 1))
      first_week=$((10#$(printf '%(%W)T' "$((epoch - day_offset * 86400))")))
      echo "$((current_week - first_week + 1))"
    }
    
    declare -i week_of_the_month
    week_of_the_month="$(week_of_the_month)"
    

    Tak. A teď to celé o-unit-testujeme, tentokrát už za použití nástrojů mimo Bash (například date):

    (
    week_of_the_month() {
      local -i epoch {current,first}_week day_offset
      epoch=EPOCHSECONDS
      current_week=$((10#$(printf '%(%W)T' "$((epoch))")))
      day_offset=$((10#$(printf '%(%d)T' "$((epoch))") - 1))
      first_week=$((10#$(printf '%(%W)T' "$((epoch - day_offset * 86400))")))
      echo "$((current_week - first_week + 1))"
    }
    
    unset EPOCHSECONDS                                # ztrácí zvláštní význam!
    declare -i EPOCHSECONDS                           # poor man’s mock
    EPOCHSECONDS="$(date '+%s' -d 2021-12-31T12:00)"  # Silvestr 2021, poledne
    
    for ((i = 0; i < 365; ++i)); do
      ((EPOCHSECONDS += 86400))                       # plus 1 den
      echo -n "$(date '+%F' -d "@${EPOCHSECONDS}"): možnost 1: "
      echo "$(((10#$(printf '%(%d)T' "$((EPOCHSECONDS))") + 6) / 7))" 
      echo -n "$(date '+%F' -d "@${EPOCHSECONDS}"): možnost 2: "
      week_of_the_month
      echo
    done
    )
    

    Za povšimnutí stojí výsledek 6 u 2. možnosti a dnů 31. ledna, 30. a 31. května a 31. října. Kdepak 1 až 4!

    26.4.2022 22:53 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: BASH - potrebujem ziskat week of the month do premenej
    Jsi z zvrhlý Andreji, víš o tom? ;-) Proč mu blbneš hlavu, když ani nevíš co je pro něj začátkem týdne ;-)

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.