bluedxca93
Anmeldungsdatum: 29. Dezember 2011
Beiträge: 367
|
Hallo,
ich habe ein skript das im Prinzip an einer Stelle nur
| p1=`awk 'BEGIN {printf "%4.3f\n",1/30}' `
p2=`awk 'BEGIN {printf "%4.3f\n",2/30}' `
...
p28=`awk 'BEGIN {printf "%4.3f\n",28/30}' `
p29=`awk 'BEGIN {printf "%4.3f\n",29/30}' `
p30=`awk 'BEGIN {printf "%4.3f\n",30/30}' `
|
oder | c0=`grep 110,0: y.txt | sed 's!110,0: !!g'`
c1=`grep 110,1: y.txt | sed 's!110,1: !!g'`
c2=`grep 110,2: y.txt | sed 's!110,2: !!g'`
...
c29=`grep 110,29: y.txt | sed 's!110,29: !!g'`
c30=`grep 110,30: y.txt | sed 's!110,30: !!g'`
|
oder |
echo "background-image: -gtk-gradient (linear, left top, left bottom, "
echo " from ($c0),"
echo " stop ($p1,$c1),"
echo " stop ($p2,$c2),"
...
echo " stop ($p29,$c29),"
echo " to ($c30));"
|
enthält. gibt es da nicht eine Schleife die das erledigt?
ist i.wann langweilig immer die Zahlen selbst anpassen zu müssen. Bei der oberen wäre i.etwas wie do for each [$0-§var1] print something [$1-$var1]/[$var1] nicht schlecht.
Bei der mittleren wäre es do for each [$0-§var1] print something [$var2],[0-$var1] nicht schlecht.
Und bei der untern ist es dann do for each [$0-§var1] print something $p"[1-[$var1-1]], $c"[1-[$var1-1]] Skript ohne Schleife ist hier zu finden : http://forum.ubuntuusers.de/topic/moechte-themes-fuer-unity-schreiben-aber/ mfg bluedxca93
|
Keba
Ehemalige
Anmeldungsdatum: 24. Juli 2007
Beiträge: 3802
|
Hallo, Spricht etwas dagegen deine Werte in einem Array zu speichern? (Viele tolle Informationen zu Arrays finden sich auf tldp.org. Das ist generell ein super Nachschlagewerk.) Beispiel:
| for i in {1..42}; do
a[$i]="do something fancy with $i"
done
|
Gegebenenfalls musst du dann noch etwas Arithmetik bemühen, um auf die gewünschten Werte zu kommen, meistens also etwas in der Form ${{a+b}} . Grüße, Keba. PS: Und ja, deine Intuition, dass man das nicht selbst zig mal schreiben will, ist völlig richtig. Es gibt sogar ein ganzes Programmierprinzip dazu: Don’t_repeat_yourself.
|
bluedxca93
(Themenstarter)
Anmeldungsdatum: 29. Dezember 2011
Beiträge: 367
|
Hallo,
Danke für den Tipp
jetzt hab ich folgendes Skript : 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 | echo 'convert slider-horiz-prelight.png txt'':''-' '|'
echo 'tail -n +2' '|' 'sed' "'"s'!'',' '!'',''!''g'"'" '|' 'sed' "'"s'!'',' '!'',''!''g'"'" '|' 'sed' "'"s'!''(' '!''(''!''g'"'" '|' 'sed' "'"s'!''(' '!''(''!''g'"'" '|'
echo 'while read position color colorhex srgbavalue junk'';' 'do'
echo 'echo' '"''$'position '$'colorhex'"'
echo 'done' '>' 'y.txt'
height=60
heightm1=$(($height-1))
halfwidth=110
echo " "
echo p0=0.000
for (( i = 1; i <= $height ; i++ )) ; do
echo p"$i"=`awk 'BEGIN {printf "%4.3f\n",'$i'/"'$height'"}' `
done
echo " "
echo 'c'"0"'''=''`''grep' "$halfwidth"','"0"':' y.txt '|' 'sed' "'"s'!'"$halfwidth"','"0"':' '!!'g"'"'`'
for (( i = 1; i <= $height ; i++ )) ; do
echo 'c'"$i"'''=''`''grep' "$halfwidth"','"$i"':' y.txt '|' 'sed' "'"s'!'"$halfwidth"','"$i"':' '!!'g"'"'`'
done
echo " "
echo "background-image: -gtk-gradient (linear, left top, left bottom,"
echo " from ("$"c0),"
for (( i = 1; i <= $heightm1 ; i++ )) ; do
echo ' 'color-stop '(''$'p"$i",'$'c"$i"')'
done
echo " to ("$"c"$height"));"
|
schreibt das Skript das ausgeführt werden soll ( bis auf untere hälte da mus noch echo echo hin) ins Terminal.
Kann eventuell nochn Tippfehler enthalten, muesste aber funktionieren. Kann ich den unteren code auch doppelt mit echo einklammern ??
mfg bluedxca93
|
bluedxca93
(Themenstarter)
Anmeldungsdatum: 29. Dezember 2011
Beiträge: 367
|
| echo ' echo ''"'' background-image: -gtk-gradient (linear, left top, left bottom, ''"'' '
echo ' echo ''"'' from ('"$"'c0), " '
for (( i = 1; i <= $heightm1 ; i++ )) ; do
echo ' echo ''"'' 'color-stop '(''$'p"$i",'$'c"$i"'),''"'''
done
echo ' echo ''"'' to ('"$"'c'$height')); ''"'' '
|
echo echo funktioniert also !!! Damit ist fast alles bez. dieses Problems gelöst.
Sieht außerdem noch recht lustig aus mit dern vielen ' und ". . Gedit meint immer es sei ein perl skript, aber das ist offensichtlich nicht der Fall.
Zum Glück ist echo ein recht schneller Befehl.
grep und sed werden nur im generierten angepassten Skript ausgeführt was das ganze auch wieder etwas beschleunigt.
Mehr als i 1..100 ist sowieso unrealistisch, da gtk3 ja ansonsten ständig im fertig generierten theme abstürzen würde XD. mfg bluedxca93
|