Portál AbcLinuxu, 6. května 2025 18:01

Dotaz: SH soubor nelze řádně spustit (invalid command line option ()

6.8.2015 22:28 cvp | skóre: 18
SH soubor nelze řádně spustit (invalid command line option ()
Přečteno: 385×
Odpovědět | Admin
Mám zde jednoduchý script na spuštění webkamery, ale vždy dostanu chybu invalid command line option (). Vůbec nevím co s tím. Editaci souboru jsem provedl na windows v Notepad++. Kódování souboru ale používám ANSI.
#!/bin/bash

config="`wget -qO- http://www.example.com/webcam/config.php`"
raspistill  $config -o /home/pi/camera/actual.jpg 
$config funguje, protože pokud tam vložím echo, získám například: -w 2592 -h 1944 -q 84 -t 2000 -ss 5900000 -ISO 320
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

6.8.2015 22:40 ewew | skóre: 40 | blog: ewewov_blog
Rozbalit Rozbalit vše Re: SH soubor nelze řádně spustit (invalid command line option ()
Odpovědět | | Sbalit | Link | Blokovat | Admin

Skús to takto

#!/bin/bash

config="`wget -qO http://www.example.com/webcam/config.php`"
raspistill "$config" -o /home/pi/camera/actual.jpg
exit 0

Určite by som skontroloval prikaz či tam nemáš preklep.

Root v linuxe : "Root povedal, linux vykona."
6.8.2015 22:53 cvp | skóre: 18
Rozbalit Rozbalit vše Re: SH soubor nelze řádně spustit (invalid command line option ()
Posun by zde byl. Přesto chybovost to stále vypisuje.
pi@raspberrypi ~/camera $ sh config.sh
: not found2: config.sh:
)nvalid command line option ( -w 2592 -h 1944 -q 84     -t 2000  -ss 5900000  -ISO 320
6.8.2015 23:46 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: SH soubor nelze řádně spustit (invalid command line option ()

No vida, kdybyste tu chybovou hlášku ukázal hned, mohlo být všechno hned jasnější: ten stahovaný soubor je podle všeho ukončen CRLF, ale bash tam CR nechá (proto ta pravá závorka na začátku řádku) a programu to vadí. Takže buď bych doporučil opravit (dos2unix) ten soubor přímo na serveru (a pro příště začal používat civilizovaný editor používající správné konce řádků) nebo to dodatečně přefiltrovat např.

#!/bin/bash

config="`wget -qO- http://www.example.com/webcam/config.php | tr -d '\r\n'`"
raspistill $config -o /home/pi/camera/current.jpg

(Ta rada s uvozovkami kolem $config je v tomto případě chybná, protože pak by se celý řetězec předal jako jeden parametr.)

P.S.: anglické slovo "actual" znamená "skutečný", ne "aktuální".

6.8.2015 23:58 nobody
Rozbalit Rozbalit vše Re: SH soubor nelze řádně spustit (invalid command line option ()
tak actual = skutecny, aktualni, soucasny... a i tve current lze prelozit sice jako aktualni, ale take jako bezny, obvykly... a hlavne co ty vis, treba mu nejde ani o aktualni snimek, ale o skutecny snimek, pak by tve current bylo vylozene spatne ;)
7.8.2015 06:41 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: SH soubor nelze řádně spustit (invalid command line option ()
Tohle sice z nějakého důvodu tvrdí Google Translate, ale třeba v mém Oxford Advanced Learner's Dictionary o hesla actual není sebemenší zmínka o tom, že by mohlo znamenat to, co v češtině aktuální. A to je pro mne podstatně důvěryhodnější zdroj.
7.8.2015 17:55 nobody
Rozbalit Rozbalit vše Re: SH soubor nelze řádně spustit (invalid command line option ()
no a pisou v tvem duveryhodnejsim Oxford Advanced Learner's Dictionary i to jestli tedy tazatel opravdu nechce ukladat radeji skutecny nez aktualni snimek? ;)
7.8.2015 07:54 cvp | skóre: 18
Rozbalit Rozbalit vše Re: SH soubor nelze řádně spustit (invalid command line option ()
Soubor config.php je generován jako: Content-Type: text/html; charset=utf-8

I přes vložení | tr -d '\r\n' script na straně linuxu vykazuje chybu:
pi@raspberrypi ~/camera $ sh camera.sh
)nvalid command line option (
7.8.2015 08:39 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: SH soubor nelze řádně spustit (invalid command line option ()

V tom případě by mne zajímal výstup

  wget -qO- http://www.example.com/webcam/config.php | od -c
7.8.2015 17:46 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: SH soubor nelze řádně spustit (invalid command line option ()

Nepotřebuje on náhodou smazat jenom \r, nikoliv \n?

7.8.2015 17:55 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: SH soubor nelze řádně spustit (invalid command line option ()
Jasně že by měl smazat \r ale v první řadě by měl spustit "wget -qO- http://www.example.com/webcam/config.php" a někam si to uložit a skouknout nějakým editorem třeba i blbým MC a přepnout si to na HEX zobrazení a zjistit co z toho serveru leze - jaké konce řádků, jaké kodování.
7.8.2015 18:09 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: SH soubor nelze řádně spustit (invalid command line option ()

Taky tady není jasné, v jakém formátu je ten stahovaný soubor. Kdyby to byl shell, třeba by se mohlo hodit ještě něco takového:

(
    script="$(sed 's/\(;[ \t]*\)*$//' | tr '\n' ';')"
    eval $script
) <<BLAH
echo blabla
sleep 1;
uptime
sleep 1
date; date +%s;
who ;:;
BLAH

Tohle^^^ mi funguje a fakt to interpretuje ten skript v HERE dokumentu. Nicméně bez podrobnější specifikace toho skriptu, tj. jak to jako má vypadat a co přesně je cílem, se dá všeho všudy divoce hádat.

6.8.2015 23:01 NN
Rozbalit Rozbalit vše Re: SH soubor nelze řádně spustit (invalid command line option ()
Odpovědět | | Sbalit | Link | Blokovat | Admin
Je problem nabouchat 3 radky v terminalu? Btw. kodovani UTF8 bude vhodnejsi..
6.8.2015 23:09 cvp | skóre: 18
Rozbalit Rozbalit vše Re: SH soubor nelze řádně spustit (invalid command line option ()
Soubor bude spouštět po minutě za pomocí crontab. Proto tři řádky umisťuji do SH souboru. Změnil jsem UTF-8. Stejné kódování je samozřejmě i při získávání dat z WGET. Bohužel stále stejná chyba.
7.8.2015 00:41 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: SH soubor nelze řádně spustit (invalid command line option ()
Odpovědět | | Sbalit | Link | Blokovat | Admin

Přesně tenhle problém jsem už párkrát viděl, kdykoliv se někdo snažil na normálním systému použít zmrvené textové soubory z béčkoých systémů, které se dosud nevzpamatovaly z věku jehličkových tiskáren a dálnopisů.

Znak carriage return většinou způsobuje tyto záhady. Soubor je potřeba před spuštěním zkonvertovat pomocí dos2unix. Mnohem lepší ovšem bude napsat ho přímo v textovém editoru na normálním systému — pak žádný záhadný problém nenastane.

Mimochodem, u krátkého skriptu bez diakritiky je skoro jedno, jestli bude uložený v UTF-8 nebo v nějakém paskvilokódování. V tomto konkrétním případě není problém v kódování, ale v koncích řádků.

7.8.2015 06:36 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: SH soubor nelze řádně spustit (invalid command line option ()
Poslední věta platí jen za předpokladu, že ten UTF-8 soubor nebude vytvořen nějakým pochybným editorem (na onom nejmenovaném operačním systému), protože ty mívají ve zvyku na začátek souborů ukládaných v UTF-8 vrazit BOM, přestože pro UTF-8 nemá absolutně žádný smysl.
7.8.2015 17:41 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: SH soubor nelze řádně spustit (invalid command line option ()

Tak KWrite tam taky umí dát BOM a pak se jeden diví, proč mu nejde přeložit soubor v TeXu. (Kompilátory C zase leckdy BOM bez problémů sežerou.) Jak moc velký to má či nemá smysl, nad tím jsem nikdy moc nepátral. UTF-8 soubory vytvořené na Intelu s češtinou a bez BOM jsem vždy bez nejmenších problémů otevřel na SPARCu i na Power7. A totéž platí naopak. (Takže tenhle BOM asi nemá mnoho společného s endianness platforem.) Od těch dob jsem si vkládání BOM v editorech vždy vypínal, aby mě to pak v nějakém nečekaném okamžiku nestřelilo do prdele.

7.8.2015 18:13 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: SH soubor nelze řádně spustit (invalid command line option ()
BOM má velmi mnoho společného s endianitou platformy - ale jednou z výhod UTF-8 reprezentace unicode je, že na endianitě nezávisí (na rozdíl např. od UTF-16); proto nemá naprosto žádný smysl dávat BOM do UTF-8 textu.
Václav 7.8.2015 08:03 Václav "Darm" Novák | skóre: 26 | blog: Darmovy_kecy | Bechyně / Praha
Rozbalit Rozbalit vše Re: SH soubor nelze řádně spustit (invalid command line option ()
Nebo notepad++ přepnout na normální konce řádků, popřípadě zkonvertovat dokument tam :)

link
Cross my heart and hope to fly, stick a cupcake in my eye!

Založit nové vláknoNahoru

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

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.