Az ilyen kihívásokat imádom, úgyhogy nosza: Generálni kéne egy jó nagy adag színt: Ha csak 00, 11, 22 ... EE, FF kódot használunk akkor is 16^3 azaz 4096 féle színt kapunk, ebből már elég jól lehet válogatni :) Azt, hogy ilyet hogy generáljunk, nem írom le. Tetszőleges nyelven meg lehet írni rá a programot, de egy bash szkript is megoldja pikk-pakk a dolgot. Na jó, legyen: for i in 00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF; do for j in 00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF; do for k in 00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF; do echo \#$i$j$k >> szinek done done done Most van több lehetőségünk is, hogy ezek közül hogy válasszunk, én úgy gondolom, hogy ha a színek többen vannak, mint amennyi kell, akkor keverjük őket össze és menjünk végig a listán - így biztos, hogy egy szín egyszer fordul elő, ráadásul véletlen sorrendben: shuf szinek -o szinek Fontos megjegyeznem, hogy a shuf szinek > szinek nem fog működni, mert a futás után üres lesz a fájl. Ez azért van, mert a bash-ben irányítjuk át a standard kimenetet a szinek fájlba, ami előtt a bash szépen kitörli a fájl tartalmát. A -o kapcsolóval viszont a programnak mondhatjuk meg, hogy a kimenet mi legyen, ilyenkor nem írja felül a fájlt :) Kellene nekünk valami olyan, ami kicseréli mondjuk a _SZIN_ szavakat a generált fájlokban. Ez egyszerű: sed 's/_SZIN_/#00FF00/' file Viszont nem a #00FF00-ra kellene cserélni, hanem a szinek fájlban lévő X. sorban található hexa kódra. Egy fájl X. sorának kiírására kapásból 3 módszer jut eszembe: sed -n 'Xp' szinek sed -n 'X{p;q}' szinek --ez gyorsabb, mert az X. sor után kilép head -X szinek | tail -1 --ez lassu... gawk 'NR==X' szinek gawk '{if (NR==2) {print $0; nextfile}}' szinek --ez megint gyorsabb Akkor most feltételezem, hogy már van XX darab html fájlunk egy könyvtárban, amik csak arra várnak, hogy a _SZIN_ részük ki legyen cserélve egy véletlen színre. Menjünk végig rajtuk és alkalmazzuk a fenti sorok valamelyikét is, hogy mindig a következő sorban lévő kód kerüljön oda: let i=1 for f in *.html; do sed "s/_SZIN_/`sed -n "$i{p;q} szinek"/g" $f let i++ done Azért persze ez előtt le kell generálni és összekeverni a színeket a szinek fájlba. Ha nem akarjuk egyedivé tenni őket, akkor lehet mindig véletlenedik sort olvasni, vagy mindig kevergetni a fájlt. Egy hasznos dolog van még, ha nem akarunk kifutni a színekből, hanem folyamatosan előről kezdeni, ha elfogy a 4096 szín: let i=1 for f in *.html; do sed "s/_SZIN_/`sed -n "$i{p;q} szinek"/g" $f let 'i = i>4096 ? 1 : i+1' done Jó éjt :) On 28/09/10 09:52, NOT INFECTED!from Lakosimi wrote:
Sziasztok!
Megoldást keresek a következő feladatra: Adva van XX db. txt fájl amelyből egy shellscript segítségével HTML fájlokat készítek. Csakhogy az lenne a feladat, hogy a fájlok hátterét ne egyforma színüre készítse. Ez néhány db. fájl esetében nem gond, mert kézzel át lehet írni, ámde 60-80-100 fájlnál azért ez már "húzós". Tehát! Hogyan tudom scriptől azt megoldani, hogy a készülő HTML fájlok más és más hátteret kapjanak?
Pl. #74ECDE #DEF4A6 #F7C7FB #C9FBCA #FBD09C #9DFBF5 #BDBAFB stb. A fentieket lehetne váltogatni, vagy akár az árnyalatokon is változtatni, ha az utóbbi megoldható.
Köszi előre is az 5leteket