hi
van egy script aminek kb percenkent kellene futnia, de az a gond hogy
37 masodpercig tart, es ebbol 26-ot a kovetkezo fv eszi meg, esetleg valami alternativa?
a script feladata tulajdonkeppen 1 vektormuveletet elvegezni kb $[ 0x100 * 3 * 3 ] adatparral
mindegyik vektor 6 tagu, szoval nem kellene az altalons fv feltetlenul...es azzal menne rendesen, de mivel az eval-oktol nem szabadulok meg ezert annyira nem elonyos
sajnos awk-ban nem vagyok annyira otthon...h jol tippelek az gyorsabb megoldas.
vagy megirom c-ben v perl-ben a teljes tablara vontakozo muveletet?
a problemas fv:
vbc()
{
local i
i=0
echo "("
for a in `eval echo "\\\${$1[@]}"`;do
b=`eval echo "\\\${$3[$i]}"`
i=$[ $i + 1 ]
echo $[ $a $2 $b ]
done
echo ")"
}
pelda:
a=( 1 2 3 )
b=( 5 5 5 )
c=`vbc a + b`
udv.kirk
- 1098 megtekintés
Hozzászólások
Csak annyit tudtam faragni rajta, hogy az eval-t csak egyszer hívjuk hat helyett. Elvileg 'az x változóban tárolt nevű változó értéke' az a
${!x}
, de ez nekem csak skalárra ment, tömbre nem.
#!/bin/bash
a=( 10 20 30 )
b=( 5 6 7 )
vbc()
{
echo "(";
eval 'for i in $(seq 0 2); do echo $((${'$1'[$i]}'$2'${'$3'[$i]})); done';
echo ")";
}
c=`vbc a + b`
echo $c
- A hozzászóláshoz be kell jelentkezni
azert egy for i in 0 1 2 parancshoz "seq 0 2" hivas kisse agyuval-verebre Linuxism, de egyelore meg azt ragom, hogy minek az eval echo, es miert nem jo a $[ blabla ], de tanitok, igy nem nagyon erek ra gondolkodni :-)
- A hozzászóláshoz be kell jelentkezni
azert mert a $1 csak a valtozo neve amelyik tombnek az elemet szeretnem viszgalni, ezert evalol...
az echo tenyleg kiejtheto:
a=b
b=1
eval "c=\"\$$a\""
- A hozzászóláshoz be kell jelentkezni
ez a
${!x}
hol van benne a manualban?
nalam csak ezek vannak ;)
${!prefix*}
${!prefix@}
${!name[@]}
${!name[*]}
de ennek fenyeben...
elvileg kikuszobolhetoek az evalok es minden, subshelles dolog... ;)
- A hozzászóláshoz be kell jelentkezni