Igen, ugyanaz, csak még meg kellett oldanom, hogy a like-nak is megfeleljen, sqlite-nak meg aposztrófok között kell átadni a shell változó tartalmát.
https://www.coreinfinity.tech
Igen, ugyanaz, csak még meg kellett oldanom, hogy a like-nak is megfeleljen, sqlite-nak meg aposztrófok között kell átadni a shell változó tartalmát.
https://www.coreinfinity.tech
Xls(x)-t tudok xml-be konvertálni valahogy?
"Élj úgy, hogy ha majd lepereg előtted életed filmje, érdemes legyen végignézni!"
Megnyitod ekcelben, save as CSV...
https://www.coreinfinity.tech
köszi, az a baj, hogy nagyon sok file, ezért valami olyan megoldás kéne, ami *.xls elven legyártaná őket.
"Élj úgy, hogy ha majd lepereg előtted életed filmje, érdemes legyen végignézni!"
libreoffice-val probald, van command line option -convert-to
Sziasztok!
Kéne egy "kis shell script topik" is kezdőknek...
Két számot kéne összehasonlítanom a problémám csak az, hogy tizedes számról van szó eben a formában.
1.11
Egész számokkal működik
if [[ 3 -ge 2 ]]
then
echo "nagyobb"
else
echo "kisebb"
fi
de ha így írom be
if [[ 3.00 -ge 2 ]]
then
echo "nagyobb"
else
echo "kisebb"
fi
bad number hibaüzenetet kapom.
Steve
a bash nem kezel törteket. szét kell szedned egész részre és tört részre.
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
Szomorú vagyok.
Találtam egy ilyet, de valamiért nem jó:
[[ "$3.00" =~ ^([1-9][^.]{2}|[7-9][0-9]|6[1-9]|2\.[0-9]*[1-9]) ]] \ && echo nagyobb
Steve
Próbáld ki a bc-t. lehet telepíteni kell.
az elméletileg tud ilyet.
"Élj úgy, hogy ha majd lepereg előtted életed filmje, érdemes legyen végignézni!"
Helló!
Csinálok épp egy olyan progit, ami sok fileból áll. ezek mind scriptek, futtathatóak. viszont majdnem mindegyikben van változódeklaráció, és változóérték-hivatkozás is. de amit az egyikben ledeklarálok, azt a másik srcipt már nem tudja. valahogy tudnám exportálni a változókat, hogy legyen a scriptek közt "átjárás"? hogy kezeljék egymás változóit?
"Élj úgy, hogy ha majd lepereg előtted életed filmje, érdemes legyen végignézni!"
alapvetően sehogy, mert amit másik futtatási környezet futtat, azt nem látja.
megkerülni úgy lehet, hogy a deklarációkat egy fájlba teszed, és ponttal beolvasod oda, ahol szintén szükséges.
tehát így:
#! /bin/bash
. valtozok.sh
másik megoldás, hogy a változót exportálod a futtatási környezetbe, így a belőle indított al-shellek is látni fogják. a bash manual olvasgatása javasolt az export utasítás környékén. de ez még mindig nem teljes megoldás.
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
köszi! olvasom.
igen, az a baj, hogy ezek a változók még a program használata alatt is folyamatosan változnak. így egy fájl folyamatos szerkesztése... hát elég macerás lenne
"Élj úgy, hogy ha majd lepereg előtted életed filmje, érdemes legyen végignézni!"
egymast hivjak a scriptek? mert akkor argumentekkent tudod nekik passzolni.
csak visszafelé nem megoldott az adatátvitel.
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
Én perl-t hivogatnék bash-ból, és IPC-t használnék.
tely, baly, fojó, mennyél, mingyárt, telyföl, tolyás, malyd, kapú, egyenlőre, ejsd, jáccani, ahoz, fúj, hüje, muszály, alat, álok, lasan, fojtatás, ál, fontós, költsön, eggyüt, lyob (jobb?), mek, mongyak, milyért - !!! Tanúlyunk már meghejjessen irni... !!!
Ha csak számok vannak a változókban, akkor megadja exit code-nak és akkor a parentben is lekérdezhető - de ettől függetlenül buhertonnak igaza van, perllel, pythonnal egyszerűbb lehetne.
[ Szerkesztve ]
https://www.coreinfinity.tech
ha csak szám van egy változóban, akkor. több integer visszaadása egy exit code-ban már kicsit munkásabb lenne... nem lehetetlen, csak munkás
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
Főleg mivel az exit code az 8 bites. Túl sok integer nem fér bele.
Jester
egyébként ha nagyon muszáj sok számot visszaadni, akkor úgy szoktam, hogy a meghívott script végén egy printf, a hívást pedig ertek=$(scriptnev par par) formában csinálom, és az értékeket szam|szam|szam alakban adom vissza.
elég barkács módszernek érzem.
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
bash-t feltételezve elég szép módszer, ha a hívott script asszociatív tömb inicializációs listát ad vissza (más nyelvekben tuple )
$ cat parent.sh
#! /bin/bash
declare -A result=$(./child.sh)
echo ${result[foo]} ${result[bar]}
$ cat child.sh
#! /bin/bash
echo "([foo]=42 [bar]=1)"
$ ./parent.sh
42 1
Jester
köszi! utánanézek.
sh4ad0w: általában nem számok. kb az egész progi alatt 20 változó van.
"Élj úgy, hogy ha majd lepereg előtted életed filmje, érdemes legyen végignézni!"
Akkor marad vmi nem-shell scriptnyelv.
https://www.coreinfinity.tech
Helló!
Vannak számok, és nekem el kell döntenem, hogy hány 0 van az elején. Ha 1 darab van, nincs gond, maradhat a szám. De ha 2, vagy 3 darabbal kezdődik, akkor csak egy db 0-nak szabad maradnia. Még az nehezít, hogy előfordulhat a számban több 00 is.
Ha valami megoldást tudtok, előre is köszönöm!
"Élj úgy, hogy ha majd lepereg előtted életed filmje, érdemes legyen végignézni!"
bash specifikus megoldás arra az esetre ha mindenképp van az elején nulla vagy ha kell az elejére nulla akkor is ha nincs:
$ shopt extglob
extglob on
$ x=123
$ echo 0${x##+(0)}
0123
$ x=0123
$ echo 0${x##+(0)}
0123
$ x=00123
$ echo 0${x##+(0)}
0123
$ x=000123
$ echo 0${x##+(0)}
0123
$ x=12003
$ echo 0${x##+(0)}
012003
Szabványos megoldás:
case "$1" in
0*)
echo -n 0
expr substr "$1" \( index "$1" 123456789 \) \( length "$1" \)
;;
*)
echo "$1"
;;
esac
Jester
Még sokat kell tanulnom.
"Élj úgy, hogy ha majd lepereg előtted életed filmje, érdemes legyen végignézni!"
Olyan kérdésem lenne, hogy tudnátok segíteni abban, hogy script segítségével megoldható lenne az alábbi dolog?
Egy adott felhasználó adott időt használhassa a gépet, majd a rendszer léptesse ki és ne engedje vissza.
Vagy erre lenne más megoldás?
Szájbarágósan vki le tudná vezetni. Soha nem programoztam.
Köszi!
melyik rendszer? ez a topic eléggé a linux shellhez húz.
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
Debian alap lenne. LinuxMint debian.
Üdv
Olyan problémám lenne, hogy mi a bah ezzel?
#! /usr/bin/bash
case $1 in
[0-9]*) echo szam;;
[a-z]*) echo betu;;
esac
a hiba pedig szintaktikai hiba a váratlan $'in\r' vezérjelkörül `case $1 in
vélemény?
köszi
Nálam megy rendesen
#!/bin/bash
case $1 in
[0-9]*) echo szam;;
[a-z]*) echo betu;;
esac
$ ./proba.sh asd
betu
tely, baly, fojó, mennyél, mingyárt, telyföl, tolyás, malyd, kapú, egyenlőre, ejsd, jáccani, ahoz, fúj, hüje, muszály, alat, álok, lasan, fojtatás, ál, fontós, költsön, eggyüt, lyob (jobb?), mek, mongyak, milyért - !!! Tanúlyunk már meghejjessen irni... !!!
hihetetlen.. akkor esetleg tudsz ajánlani valami programot, ami windows alatt jól futtatja a scriptet? cygwin-t használok, ami awk-hoz jó..de bash-hez nem nagyon :\
Jah, hogy cygwin . Az egy végtelenül erőszakos, és nem mellesleg bugos cucc, de tudtommal egyetlen, ami windowsra van.
tely, baly, fojó, mennyél, mingyárt, telyföl, tolyás, malyd, kapú, egyenlőre, ejsd, jáccani, ahoz, fúj, hüje, muszály, alat, álok, lasan, fojtatás, ál, fontós, költsön, eggyüt, lyob (jobb?), mek, mongyak, milyért - !!! Tanúlyunk már meghejjessen irni... !!!
yess
még nem nagyon foglalkoztam ilyennel, de gondolom van portable linux.. leszedek egyet..
jah és köszi egyébként !
[ Szerkesztve ]
Vagy vm-t csinálsz magadnak és akkor egy teljes értékű Linuxot fogsz tudni használni . Ajánlom a virtualboxot. Én pont Linux alatt csináltam vm-t az XP-nek .
tely, baly, fojó, mennyél, mingyárt, telyföl, tolyás, malyd, kapú, egyenlőre, ejsd, jáccani, ahoz, fúj, hüje, muszály, alat, álok, lasan, fojtatás, ál, fontós, költsön, eggyüt, lyob (jobb?), mek, mongyak, milyért - !!! Tanúlyunk már meghejjessen irni... !!!
A \r az a carriage return (13) karakter ami a windowsos sorvégjel (CR LF) része a shell viszont nem örül neki. Konvertáld unixos szövegfájllá amiben LF (10) a sorvég.
Jester
Köszi szépen a segítségeket! sajnos a konvertálás nem jött össze :\ szedtem hozzá programot, próbáltam paranccsal is..de semmi:\
A vm jó ötlet volt! fel is raktam a legújabb ubuntut, de sajnos kevés hozzá a gépem, így akadt mint a fene
Végül találtam egy bash nevű progit, ami jó arra amire kell
nos lenne még egy problémám..
#! /bin/bash
szam=0
szorzat=1
osszeg=0
I=$1
for I in $@
do
case $1 in
[1-9]*) $((szorzat = szorzat*$1)) $((osszeg = osszeg + $1)) $((szam = szam + 1)) 2> /dev/null ;;
[a-z]*) echo Hiba! $1 nem szam;;
esac
shift
done
atlag =`expr $osszeg \ $szam`
echo $szorzat
echo $osszeg
echo $atlag
echo $szam
a probléma pedig, hogyan számolok átlagot? valamint, [1-9]*) $((szorzat = szorzat*$1)) $((osszeg = osszeg + $1)) $((szam = szam + 1)) ezt a sort, nem lehetne egyszerűbben megoldani? és miért kell dupla zárójel sajna máshogy nem működött!
köszi
[ Szerkesztve ]
Azért kell a dupla zárójel mert így találták ki.
Egyébként általában inkább szorzat=$((szorzat*$1)) formában szokás írni mert úgy talán olvashatóbb (és persze azt a hármat külön sorokba). Az átlagszámításnál ne \ (visszaper, backslash) karaktert használj, hanem a "rendes" / perjelet. A shell sajnos csak egész aritmetikát használ tehát ha neked tizedestörtek kellenek akkor ajánlott valami segédprogram (jellemzően bc) alkalmazása.
Jester
Sziasztok,
Ezt a feladatot meg tudná nekem valaki csinálni? Nagyon hálás lennék érte : Készíts szkriptet, amelyik 2 fájlt kap paraméterül. Az egyik fájlban egy szöveg található, a másikban szópárok. A szópárok első tagját ki kell cserélni a szövegben a második szóra. Ellenőrzésekkel (paraméter, fájl).
Házi feladatot nem szokásunk megcsinálni más helyett
Jester
Nem házi de nagyon kellene, power shellben meg tudom csinálni csak simában nem
sed manualja sokat segíthet.
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
Sziasztok! Van 4 feladatom amiben a segítségeteket szeretném kérni.
1. Írjon shell scriptet, mely addig kér be számokat, míg 0-t nem kap. Ha ez megtörténik írja ki
az addig beolvasott számok összegét!
2. Írjon shell scriptet, mely a paraméterül kapott számok közül kiírja a legkisebbet, a
legnagyobbat és a számok átlagát!
3. Írjon shell scriptet, mely bekér 3 számot és eldönti, hogy megszerkeszthető-e belőlük a
háromszög. Ha igen, akkor határozza meg azt is, hogy milyen típusú háromszög!
4. Írjon shell scriptet, mely bekéri a felhasználótól, hogy mely 5 db 1-90 közötti számokat
szeretné megtenni az eheti ötöslottón, majd véletlen szám generálással kisorsolja az 5 db
nyerő számot és végül kiírja a kisorsolt számokat és hogy hány találata volt! (A számok
között ismétlődés értelem szerűen sehol sem megengedett!)
Ezt kaptuk gyakorlásnak a zh-ra csak még hasonlókat sem gyakoroltunk órán...
Előre is köszönöm a segítséget
A segítség a mi értelmezésünkben arról szól, hogy ha megakadtál, megsúgjuk azt az 1-2 kulcsszót, amivel továbblendülsz. A segítség biztosan nem jelenti azt, hogy megírjuk helyetted az egészet, az sem nem volna etikus, sem nem volna törvényes.
De erről alig pár hsz-szel korábban már volt itt szó.
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
Jönnek az utolsó hetek az egyetemeken . Ilyenkor mindenhol megszaporodnak az ilyen jellegű kérések.
tely, baly, fojó, mennyél, mingyárt, telyföl, tolyás, malyd, kapú, egyenlőre, ejsd, jáccani, ahoz, fúj, hüje, muszály, alat, álok, lasan, fojtatás, ál, fontós, költsön, eggyüt, lyob (jobb?), mek, mongyak, milyért - !!! Tanúlyunk már meghejjessen irni... !!!
helló!
a scriptemben szertnék változókat gyártatni, és mindegyiket értékkel ellátni.
pl:
T1=1
T2=2
T3=3
.
.
.
de mivel sok ilyen van (kb 50 db), így a változók sorszámozását egy while paranccsal szeretném előállíttatni.
hogy tudom a változó nevét úgy megadni, hogy abban mindig legyen egy szám (egy változóból), ami egyel nő?
"Élj úgy, hogy ha majd lepereg előtted életed filmje, érdemes legyen végignézni!"
Ezt az adatszerkezetet úgy hívják, hogy tömb. Ha valami extrém ok miatt az mégsem felel meg neked, akkor lásd ezt.
Jester
köszi!
erre gondoltam. lehet, el is kezdek ismerkedni a tömbökkel.
"Élj úgy, hogy ha majd lepereg előtted életed filmje, érdemes legyen végignézni!"
Üdv!
Lenne két gyors kérdésem..
van egy script:#! /usr/bin/awk -f
{
FS=";"
tav[$2] += $5
}
END{
for(taj in tav)
{
print taj, " " tav[taj]
}
}
ezzel szeretném összeadatni a tájegységekhez tartozó távokat
Romania; Kelemen-havasok; Marosheviz; Pietros; 11
Magyarorszag; Borzsony; Diosjeno; Nagy-hideg-hegy; 19
Romania; Kelemen-havasok; Marosheviz; Pietros; 25
Magyarorszag; Matra; Gyongyos; Matraszentistvan; 23
Magyarorszag; Borzsony; Diosjeno; Nagy-hideg-hegy; 12
Magyarorszag; Matra; Gyongyos; Matraszentistvan; 18
Romania; Kelemen-havasok; Marosheviz; Pietros; 17
$2 taj $5 a tav
na most ilyen formában ezt az eredményt kapom:
Matra 41
Borzsony 31
Kelemen havasok 42
Kelemen havasok; 11
az első sorral van valami probléma..:\ de nem tudom, hogy mi lehet a baj, ha pedig nyomok egy entert, az első sor elé, akkor pedig azt kapom, hogy
Matra 42
0
Borzsony 31
Kelemen havasok 53
Előre is köszi
Az FS-t vagy BEGIN blokkban vagy parancssori argumentummal kell beállítani mert így értelemszerűen az első sorra nem vonatkozik. Az üres sorokat pedig külön kell lekezelni ha szükséges.
Jester