Kezdőlap › Fórumok › Programozás › Bash script
- This topic has 437 hozzászólás, 56 résztvevő, and was last updated 13 years, 6 months telt el by
Goosfrabaa.
-
SzerzőBejegyzés
-
2006-11-07-14:10 #2053369
Nagyjából megy mind a kettő, apróbb igazításokkal (a konkrét feladathoz).
Köszönöm szépen.2006-11-07-16:56 #2053370Sőt, akár két egymásbaágyazott ciklust is csinálhatsz, úgy még elegánsabb 😉
2006-11-08-21:02 #2053371A következő a problémám:
csinálok egy tempdirt:
TEMP=`mktemp -d /tmp/$USER.XXXXXXXX` (Azért így, mert most ez a szabványos)
Aztán később van egy rész ahol egy ” 1 1 1 2 2 2 1 2 1 0 1 1 2 1 ” stílusú stringben seddel kicserélném a számokat a tempdirben szereplő filenevekre. Mondjuk az összes 1-est $TEMP/a.txt-re, az összes 2-est $TEMP/b.txt-re stb. Csak az a gond, hogy a bash behelyettesíti a $TEMPet, amiben néha előfordul 1-es meg 2-es, és mivel globálisan cserélek, ezért a sed a tempdir nevében levőket is lecseréli amit nem kéne… Ha /tmp/akarmi a tempdir, akkor megy, de most ez nem ajánlott.
Tudnátok segíteni?Szerk.: seddel hogy lehet „/” karakterre cserélni? Még a „/” sem tetszik neki.
2006-11-09-18:36 #2053372mktemp-es csere: muti, hogy csinálod, nem teljesen világos.
/ karakter cseréje: „s@/@csere@g”
2006-11-09-19:31 #2053373És akkor @ karaktert hogy cserélek? Honnan tudja a sed, mi az elválasztó karakter?
mktemp:
$TEMP az valami ilyesmi: /tmp/username.1235625
cucc=`echo „${t[*]}”|sed „s@1@$TEMP/file1@g”|sed „s@2@$TEMP/file2@g”|sed „s@0@$TEMP/file3@g”`Az a pötty egy [ meg egy * meg egy ] akar lenni csak valami másnak képzeli az smf…
2006-11-09-21:44 #2053374És hogy listázod a pl. 2006 december 9-én létrehozott fájlokat elegánsan?
(monny’uk ez is megy: ls -l | grep 2006-12-09 –> de ha a fájlnév is ezt tartalmazza…)2006-11-10-09:04 #2053375retaliator44 : az első karakter a parancs után (esetünkben az s után). Lehet pont, vessző, stb.
tothaa: használd ki, hogy az egyik (meghatározott) oszlop tartalmazza a dátumot (nem linuxon vagyok, így nem tudom megmondani, melyik). Utána ha más nem akkor egy reguláris kifejezéssel mehet.
2006-11-10-19:33 #2053376„retaliator44 : az első karakter a parancs után (esetünkben az s után). Lehet pont, vessző, stb.”
Úristen. Ennyire egyszerű és nem jut eszembe… köszönöm.2006-11-10-20:17 #2053377Nem biztos, hogy minden karakter lehet, de a man biztos megmondja.
2006-11-29-10:06 #2053378Sziasztok!
Lehet hogy nem pont ebbe a topikba kellene írnom, de tulajdonképen a problémám ez:
bach script – változó a változóbanSzóval:
Van egy mysql adatbázis, benne egy tábla, egy „query” mezővel ami query-ket tartalmaz 😛 . Valami ehhez hasonlókat:
select count(*) from products where provider=$provider and avail=’0′;
Egy bash script kiolvassa a tartalmát és futtatnia kellene, a megfelelő változó átadásával. Valahogy így:
Code:query=`echo „select query from querys where code=’1′;'” | mysql -N stats`
echo $queryEddig minden ok, kiírja a megfelelő query-t így:
select count(*) from products where provider=$provider and avail=’0′;
Aztán:
Code:for provider in ${providers[@]}; do
val=`echo -e $query | mysql -N stats`
echo „$provider, $val”
doneMost futtatni kellene a kapott query-t átadva neki a „provider” változót.
Sajnos ez nem történik meg, a query-t az eredeti formájában futtatja (vagyis „provider=$provider”-el ), anélkül, hogy behelyetesítené a változó értékét.Hogy tudnám erre rávenni?
Előre is kösz.
vazi
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz