abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
3.12. 16:24 | Nová verze

Byla vydána Mageia 5.1. Jedná se o první opravné vydání verze 5, jež vyšla v červnu loňského roku (zprávička). Uživatelům verze 5 nepřináší opravné vydání nic nového, samozřejmě pokud pravidelně aktualizují. Vydání obsahuje všechny aktualizace za posledního téměř půldruhého roku. Mageia 5.1 obsahuje LibreOffice 4.4.7, Linux 4.4.32, KDE4 4.14.5 nebo GNOME 3.14.3.

Ladislav Hagara | Komentářů: 4
3.12. 13:42 | Pozvánky

V Praze probíhá konference Internet a Technologie 16.2, volné pokračování jarní konference sdružení CZ.NIC. Konferenci lze sledovat online na YouTube. K dispozici je také archiv předchozích konferencí.

Ladislav Hagara | Komentářů: 0
2.12. 22:44 | Komunita

Joinup informuje, že Mnichov používá open source groupware Kolab. V srpnu byl dokončen dvouletý přechod na toto řešení. V provozu je asi 60 000 poštovních schránek. Nejenom Kolabu se věnoval Georg Greve ve své přednášce Open Source: the future for the European institutions (SlideShare) na konferenci DIGITEC 2016, jež proběhla v úterý 29. listopadu v Bruselu. Videozáznam přednášek z hlavního sálu je ke zhlédnutí na Livestreamu.

Ladislav Hagara | Komentářů: 22
2.12. 15:30 | Zajímavý projekt

Společnost Jolla oznámila v příspěvku Case study: Sailfish Watch na svém blogu, že naportovala Sailfish OS na chytré hodinky. Využila a inspirovala se otevřeným operačním systémem pro chytré hodinky AsteroidOS. Použita je knihovna libhybris. Ukázka ovládání hodinek na YouTube.

Ladislav Hagara | Komentářů: 8
2.12. 14:15 | Nová verze

Byla vydána verze 7.1.0 skriptovacího jazyka PHP používaného zejména k vývoji dynamických webových stránek. Jedná se o první stabilní verzi nejnovější větvě 7.1. Přehled novinek v dokumentaci. Podrobnosti v ChangeLogu. K dispozici je také příručka pro přechod z PHP 7.0.x na PHP 7.1.x.

Ladislav Hagara | Komentářů: 3
2.12. 12:55 | Nová verze

Google Chrome 55 byl prohlášen za stabilní. Nejnovější stabilní verze 55.0.2883.75 tohoto webového prohlížeče přináší řadu oprav a vylepšení (YouTube). Opraveno bylo také 36 bezpečnostních chyb. Mariusz Mlynski si například vydělal 22 500 dolarů za 3 nahlášené chyby (Universal XSS in Blink).

Ladislav Hagara | Komentářů: 4
2.12. 11:55 | Pozvánky

Máte rádi svobodný software a hardware nebo se o nich chcete něco dozvědět? Přijďte na 135. sraz spolku OpenAlt, který se bude konat ve čtvrtek 8. prosince od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Sraz bude tentokrát tématický. Bude retro! K vidění budou přístroje jako Psion 5mx nebo Palm Z22. Ze svobodného hardwaru pak Openmoko nebo čtečka WikiReader. Přijďte se i vy pochlubit svými legendami, nebo alespoň na pivo. Moderní hardware má vstup samozřejmě také povolen.

xkucf03 | Komentářů: 1
2.12. 00:10 | Nová verze

Byla vydána verze 3.2 svobodného systému pro detekci a prevenci průniků a monitorování bezpečnosti počítačových sítí Suricata. Z novinek lze zmínit například podporu protokolů DNP3 a CIP/ENIP, vylepšenou podporu TLS a samozřejmě také aktualizovanou dokumentaci.

Ladislav Hagara | Komentářů: 0
1.12. 21:00 | Nová verze

Byla vydána beta verze Linux Mintu 18.1 s kódovým jménem Serena. Na blogu Linux Mintu jsou hned dvě oznámení. První o vydání Linux Mintu s prostředím MATE a druhé o vydání Linux Mintu s prostředím Cinnamon. Stejným způsobem jsou rozděleny také poznámky k vydání (MATE, Cinnamon) a přehled novinek s náhledy (MATE, Cinnamon). Linux Mint 18.1 bude podporován až do roku 2021.

Ladislav Hagara | Komentářů: 0
1.12. 16:42 | Nová verze

Byl vydán Devuan Jessie 1.0 Beta 2. Jedná se o druhou beta verzi forku Debianu bez systemd představeného v listopadu 2014 (zprávička). První beta verze byla vydána v dubnu letošního roku (zprávička). Jedna z posledních přednášek věnovaných Devuanu proběhla v listopadu na konferenci FSCONS 2016 (YouTube, pdf).

Ladislav Hagara | Komentářů: 2
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (7%)
 (5%)
 (3%)
Celkem 771 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

Dotaz: Jak vložit argumenty s uvoyovkou do proměnné v bash skriptu

8.2. 11:47 pavele
Jak vložit argumenty s uvoyovkou do proměnné v bash skriptu
Přečteno: 316×
Mám skript na zálohování v bash:
#!/bin/bash

ionice -c 3 nice -n 15 unison -copythreshold 4096 -maxthreads 1000 -stream -copyprog "rsync --inplace" -copyprogrest "rsync --partial --inplace" -fastcheck true -owner -group -batch -auto -ui text -logfile /var/log/unison/lab1.log /mnt/pripoj/lab/lab1/ ssh://root@192.168.5.256//mnt/pripoj/lab/lab1/ -sshargs '-i /root/.ssh/unison/id_rsa -c arcfour' >> /var/log/unison/lab1.log

Potřeboval bych dát do proměnné:

-copyprog "rsync --inplace" -copyprogrest "rsync --partial --inplace"

Zkoušel jsem:
OPTS2=( -copythreshold 4096 -maxthreads 1000 -stream -copyprog "rsync --inplace" -copyprogrest "rsync --partial --inplace" )
A potom ve skriptu: unison "${OPTS2[@]}" ....

Ale nefunguje to.

Odpovědi

8.2. 12:00 NN
Rozbalit Rozbalit vše Re: Jak vložit argumenty s uvoyovkou do proměnné v bash skriptu
Dat to do jednoduchych uvozovek jsi zkousel?
8.2. 12:04 jekub
Rozbalit Rozbalit vše Re: Jak vložit argumenty s uvoyovkou do proměnné v bash skriptu
[jk@brntos ~]$ OPT='a "b" c'
[jk@brntos ~]$ echo $OPT
a "b" c
[jk@brntos ~]$ OPT="a \"b\" c"
[jk@brntos ~]$ echo $OPT
a "b" c
8.2. 12:30 Andrej | skóre: 43 | blog: Republic of Mordor | Zürich
Rozbalit Rozbalit vše Re: Jak vložit argumenty s uvoyovkou do proměnné v bash skriptu
Ale nefunguje to.

Co přesně tohle^^^ znamená? Naneštěstí nemám křišťálovou kouli. Chtělo by to přesnější popis, co na tom nefunguje.

Pro začátek je dobré si otestovat, jaké argumenty se tomu programu předávají, tedy co skončí jako jeden celý argument:

blah () { for ((i = 1; i <= $#; ++i)); do echo "${i}: ${!i}"; done; }
blah "${OPTS2[@]}"

To mi vypisuje něco, co vypadá v pořádku:

1: -copythreshold
2: 4096
3: -maxthreads
4: 1000
5: -stream
6: -copyprog
7: rsync --inplace
8: -copyprogrest
9: rsync --partial --inplace
Jestli je nutné mít tam uvozovky kvůli dvojí expanzi, tj. aby i po dvojí expanzi zůstaly skupiny tokenů stále pohromadě, nebo případně opravdu předat uvozovky jako součást parametru tomu programu, pak asi nezbude než uložit uvozovky přímo do proměnné. Stačí zkusit třeba tato dvě pole:
# Původní verze pole:
OPTS2=(-copythreshold 4096
       -maxthreads 1000
       -stream
       -copyprog 'rsync --inplace'
       -copyprogrest 'rsync --partial --inplace')
# Pole s extra uvozovkami pro další expanzi:
OPTS3=(-copythreshold 4096
       -maxthreads 1000
       -stream
       -copyprog '"rsync --inplace"'
       -copyprogrest '"rsync --partial --inplace"')

Výsledek je pak vidět na výstupu z následujících čtyř pokusů. OPTS2 ustojí jen jednu expanzi, zatímco OPTS3 zvládne dvě expanze a po té první má stále v sobě uvozovky.

blah () { for ((i = 1; i <= $#; ++i)); do echo "${i}: ${!i}"; done; }
blah "${OPTS2[@]}"       # 1 expanze OPTS2
eval blah "${OPTS2[@]}"  # 2 expanze OPTS2 (rozbité)
blah "${OPTS3[@]}"       # 1 expanze OPTS3
eval blah "${OPTS3[@]}"  # 2 exapnze OPTS3
ǑǦŹǓǕǙǞǺǨȞȬḔḦḰḾṊṎṸẄẌỖ
8.2. 14:03 pavele
Rozbalit Rozbalit vše Re: Jak vložit argumenty s uvoyovkou do proměnné v bash skriptu
Jednoduché uvozovky nefungují.

Zpětné uvozovky nefungují.

Varianta s polem verze "# Pole s extra uvozovkami pro další expanzi:" (OPTS3) funguje.

Díky.
8.2. 14:04 pavele
Rozbalit Rozbalit vše Re: Jak vložit argumenty s uvoyovkou do proměnné v bash skriptu
Tedy, těmi "Zpětné uvozovky nefungují" jsem myslel zpětné lomítka... :-)
10.2. 06:35 Andrej | skóre: 43 | blog: Republic of Mordor | Zürich
Rozbalit Rozbalit vše Re: Jak vložit argumenty s uvoyovkou do proměnné v bash skriptu

Zpětná lomítka fungují, dokonce na několik způsobů. Jenom tam musí být vždycky něco, co udrží ty tokeny pohromadě i při druhé expanzi, ke které zjevně v tomto konkrétním skriptu dochází.

OPTS4=(-copyprog \''rsync --inplace'\'
       -copyprogrest \''rsync --partial --inplace'\')
OPTS5=(-copyprog \""rsync --inplace"\"
       -copyprogrest \""rsync --partial --inplace"\")
OPTS6=(-copyprog rsync\\\ --inplace
       -copyprogrest rsync\\\ --partial\\\ --inplace)
ǑǦŹǓǕǙǞǺǨȞȬḔḦḰḾṊṎṸẄẌỖ
10.2. 09:47 pavele
Rozbalit Rozbalit vše Re: Jak vložit argumenty s uvoyovkou do proměnné v bash skriptu
V tomto případě zpětná lomítka fungují pouze v poli.
8.2. 16:42 OldFrog {Ondra Nemecek} | skóre: 25 | blog: Žabákův notes | Praha
Rozbalit Rozbalit vše Re: Jak vložit argumenty s uvoyovkou do proměnné v bash skriptu
Záleží, kolikrát se to expanduje. Pokud jednou, pak to funguje. Pokud dvakrát, tak to pak už nefunguje, protože escape znak (zpětné lomítko) už byl v první expanzi odstraněn. Tj. toto vám v moderním bashi musí fungovat:
$ OPT='a "b" c'
$ echo $OPT
a "b" c
Pokud to ale dáváte jako parametr nástroji který spouští další nástroj, pak to může být komplikovanější a chce to nažhavit mozkové závity a manuál :-)
-- OldFrog
Jendа avatar 8.2. 16:52 Jendа | skóre: 73 | blog: Výlevníček | JO70FB
Rozbalit Rozbalit vše Re: Jak vložit argumenty s uvoyovkou do proměnné v bash skriptu
Když spustíš skript pomocí bash -x, tak to vypíše, co to dělá.
Potřeboval bych dát do proměnné:

-copyprog "rsync --inplace" -copyprogrest "rsync --partial --inplace"
> PROM='-copyprog "rsync --inplace" -copyprogrest "rsync --partial --inplace"'
> echo "$PROM"
-copyprog "rsync --inplace" -copyprogrest "rsync --partial --inplace"
8.2. 19:56 pavele
Rozbalit Rozbalit vše Re: Jak vložit argumenty s uvoyovkou do proměnné v bash skriptu
set -x
PROM='-copyprog "rsync --inplace" -copyprogrest "rsync --partial --inplace"'

unison  "$PROM" /home/karel/a/ /home/karel/b/

+ unison '-copyprog "rsync --inplace" -copyprogrest "rsync --partial --inplace"' /home/karel/a/ /home/karel/b/
Usage: unison [options]
    or unison root1 root2 [options]
    or unison profilename [options]
unison: unknown option `-copyprog "rsync --inplace" -copyprogrest "rsync --partial --inplace"'.
++ pwd
++ kill -STOP 11806

9.2. 18:58 lertimir | skóre: 58 | blog: Par_slov
Rozbalit Rozbalit vše Re: Jak vložit argumenty s uvoyovkou do proměnné v bash skriptu
U Unisonu jsem měl vždy konfigurační souboru pro jednotlivé synchronizace a nesnažil jsem se tam cpát parametry skrz bash-

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.