Ezt hogy szokás intelligensen (tmpfuttass nélkül) megoldani?
Azaz, hogy pl. az sqlite-nak adandó string (fájl helyett) egy változóba gyűljön?
http://pastebin.com/U9BuKJKd
- 3484 megtekintés
Hozzászólások
Ez shell script? Akkor esetleg függvénybe tenném a shellben elvégzendőket és a függvény kimenetét küldeném pipe-on a sqlite-ba.
- A hozzászóláshoz be kell jelentkezni
Igen, bash script.
- A hozzászóláshoz be kell jelentkezni
parancs=".output kimenet"
for i in {1..7}; do
parancs="${parancs} ; .sc t${i}"
done
echo ${parancs} | sqlite $db
Nem tesztelt, de nagyjából így.
De így talán még jobb is:
(echo ".output kimenet"
for i in {1..7}; do
echo .sc t${i}
done) | sqlite $db
- A hozzászóláshoz be kell jelentkezni
Ja, hogy már (?) függvény sem kell hozzá?
- A hozzászóláshoz be kell jelentkezni
Mármint mihez?
- A hozzászóláshoz be kell jelentkezni
Hogy a teljes, stdout-ra menő adathalmazt egy pipe-ba küldd.
- A hozzászóláshoz be kell jelentkezni
Ja, értem. Nem tudom, mióta van ez, de amióta bash-szerű dolgokat ismerek, így van (kb. tíz év).
- A hozzászóláshoz be kell jelentkezni
Ja, meg ha a tmpfutass-szerű dolog elkerülhetetlen (vagy lényegesen egyszerűbb), akkor inkább a mktemp parancsot használd!
tmpfile=`mktemp`
echo kutyafüle > ${tmpfile}
echo macskafarka >> ${tmpfile}
cat ${tmpfile}
rm ${tmpfile}
- A hozzászóláshoz be kell jelentkezni
Köszi! Elegáns!!
- A hozzászóláshoz be kell jelentkezni
Használd egész-seggel :)
- A hozzászóláshoz be kell jelentkezni
És ha kerek zárójel helyett kapcsos zárójeleket használsz, megspórolsz egy tök felesleges processzt is :-)
{ echo
for
... ; } | blabla
- A hozzászóláshoz be kell jelentkezni
Először szóköz közbeékelés nélkül kíséreltem meg a kapcsos zárójelek használatát, ami hibát adott. De {+szóközzel valóban jól megy.
- A hozzászóláshoz be kell jelentkezni