Portál AbcLinuxu, 4. května 2025 09:12

Dotaz: Jak na soubory

2.4.2016 09:30 Miro
Jak na soubory
Přečteno: 540×
Odpovědět | Admin
Zdravím.

Mam linux od vánoc a zkouším muj první sh skript.

Nemohu najít nějaký tutorial, jak na soubory?

Třeba toto mi uloží proměnnou X do souboru.

echo ${x} > cesta k souboru

Jak ji pak s toho souboru načtu zpět do té proměnne?

echo ${x} > cesta k souboru přepisuje obsah souboru.

Jak však zapsat do souboru další proměnnou na další řadek?

A jak je pak znovu načist po řadcích?

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

2.4.2016 09:38 NN
Rozbalit Rozbalit vše Re: Jak na soubory
Odpovědět | | Sbalit | Link | Blokovat | Admin
Doporucuji projit si nektery zakladni tutorial. Zacit muzes napriklad zde. No a konecne RTFM.
2.4.2016 09:55 Miro
Rozbalit Rozbalit vše Re: Jak na soubory
Dik, kouknu.

Než to proštudují porad zatim.

Toto mi uloží proměnnou X do souboru.

echo ${x} > cesta k souboru

Jak na to opačně?

Načist to hodnotu se souboru do X?
2.4.2016 10:10 Filip Jirsák
Rozbalit Rozbalit vše Re: Jak na soubory
Toto mi uloží proměnnou X do souboru. echo ${x} > cesta k souboru
Nikoli. V tomto případě shell expanduje proměnnou x, nebo-li při volání nahradí ten výraz ${x} hodnotou proměnné x. Výsledkem tedy bude, že spustí příkaz echo, který bude jako první parametr mít hodnotu proměnné x. Příkaz echo vypíše vstupní parametry na standardní výstup. A příkaz > přesměruje standardní výstup do souboru, přičemž soubor nejprve vymaže. Podobně příkaz >> přesměruje standardní výstup do souboru, ale soubor nevymaže, tj. přidává na konec.
k3dAR avatar 2.4.2016 12:34 k3dAR | skóre: 63
Rozbalit Rozbalit vše Re: Jak na soubory
treba takto:
x="$(cat /cesta/soubor)"
cat cte soubor, pri uzavreni do $() je vysledkem obsah vykonaneho prikazu, v "" je to proto kdyby tam byla mezera

pro vzdelani se (v EN) doporucuju: Bash Guide for Beginners a Advanced Bash-Scripting Guide, a dalsi viz: http://www.tldp.org/guides.html, http://wiki.bash-hackers.org/
porad nemam telo, ale uz mam hlavu... nobody
Jendа avatar 2.4.2016 14:21 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Jak na soubory
Doporučil bych spíše Linux - Dokumentační projekt.

Načtení: prom=`cat file`, zápis další: echo "$prom" >> file
2.4.2016 14:41 Filip Jirsák
Rozbalit Rozbalit vše Re: Jak na soubory
Na tomhle je přesně vidět, že bez potřebných znalostí je to tazateli k ničemu. Protože vzápětí vytvoří takováhle příklad u bude se tu divit, jak to, že mu to nefunguje:
#uloží X do souboru
echo ${X} > /cesta/k/souboru

#načte X ze souboru
X=`cat /cesta/k/souboru`

#uloží další X do souboru
echo ${X} >> /cesta/k/souboru

#načte další X ze souboru
X=`cat /cesta/k/souboru`
3.4.2016 01:02 dutá palice
Rozbalit Rozbalit vše Re: Jak na soubory
+1
2.4.2016 17:52 dutá palice
Rozbalit Rozbalit vše Re: Jak na soubory
Tam bych nezačínal, vím, je to článek na abclinuxu a tam taky ne. https://www.gnu.org/software/bash/manual/
2.4.2016 18:07 dutá palice
Rozbalit Rozbalit vše Re: Jak na soubory
A proč za celou historii abclinuxu to není česky, no protože by nebyl čas na psaní článků a zpráv (s dobou životnosti nejlépe 1 roku od vydání nebo dokonce o hovně).
k3dAR avatar 2.4.2016 23:24 k3dAR | skóre: 63
Rozbalit Rozbalit vše Re: Jak na soubory
za celou historii internetu to duta palice nebyla schopna prelozit, protoze by nebyl cas na psani trapnejch komentaru?
porad nemam telo, ale uz mam hlavu... nobody
3.4.2016 17:30 cronin | skóre: 49
Rozbalit Rozbalit vše Re: Jak na soubory
Pretože ľudia, ktorí nejaký manuál potrebujú, majú na jeho napísanie čas a ochotu, zvyčajne nemajú na jeho napísanie vedomosti. Keď potrebné vedomosti nadobudnú, potreba manuálu zmizne, a tým aj ochota ho písať. Nehovoriac o tom, že neraz aj čas, keďže nadobudnuté vedomosti už používajú na riešenie iných problémov.
4.4.2016 00:05 dutá palice
Rozbalit Rozbalit vše Re: Jak na soubory

Bohužel máš pravdu!

.................................

Když už někdo o tom bashi píše, proč radši nepřeloží originál ..

2.4.2016 21:40 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: Jak na soubory
Odpovědět | | Sbalit | Link | Blokovat | Admin
Způsobů, jak načíst soubor do proměnné, je mnoho a každý z nich je vhodný pro jiný účel. Velmi často se však obsah souboru do proměnné vůbec nenačítá a pracuje se se souborem jako s celkem - obsah souboru se prostě přesměruje do příkazu.

Je tedy dobré si promyslet, co vlastně s tím obsahem souboru chceš udělat a zda je vůbec nutné nějakou proměnnou použít.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
4.4.2016 08:06 Miro
Rozbalit Rozbalit vše Re: Jak na soubory
Dik moc.

Mužu ještě dotaz.

Snažím se nakrmit databází rrdtool.

teplota1="$(cat /dev/shm/teplota_kotel)"

rrdtool update /home/pi/databaze_teplota.rrd N:${teplota1:-NaN}:NaN

' to float not complete: tail 'a.rrd: conversion of '14.7

Podle meho se mu nelíbí ta tečka a chce tam čarku, ne?

Jak na to?

4.4.2016 09:35 Miro
Rozbalit Rozbalit vše Re: Jak na soubory
teplota1="21.1"

echo $teplota1 # vypiše 21.1

rrdtool update /home/pi/databaze_teplota.rrd N:${teplota1:-NaN}:NaN

a funguje to

teplota1="$(cat /dev/shm/teplota_kotel)"

echo $teplota1 # vypiše 21.1

rrdtool update /home/pi/databaze_teplota.rrd N:${teplota1:-NaN}:NaN

a nefunguje

' to float not complete: tail 'a.rrd: conversion of '14.4
4.4.2016 10:38 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: Jak na soubory
Možná tam zlobí nějaké CRLF na konci. Určitě bych dal ten parametr do uvozovek, tedy:
rrdtool update /home/pi/databaze_teplota.rrd "N:${teplota1:-NaN}:NaN"
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
4.4.2016 11:14 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: Jak na soubory
Místo
teplota1="$(cat /dev/shm/teplota_kotel)" 
bych zkusil dát
read teplota1 rest </dev/shm/teplota_kotel
což zajistí, že z toho zařízení bude přečtena jedna hodnota pouze po první bílý znak.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.

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.