dilan1998
(usa Debian)
Enviado em 26/06/2023 - 01:25h
Estou fazendo um script para receber 2 parâmetros, esses parâmetros serão comandos que vão fazer um loop para pegar o tempo de execução de cada um e comparar, trazer o mais veloz em %, porém estou com um problema que não estou conseguindo resolver, ao passar algo como "$(</etc/passd)" o shell passa a saida do comando, mesmo passando com aspas simples, e execuntando eval $var nao estou conseguindo. segue o script e o trecho
Trecho :
cmd=${1}
count(){
i=1
starter=$((time for ((i;i<5;i++)) ; { eval ${cmd} > /dev/null ; }) 2>&1)
: ${starter/?user*/} ; echo $_
}
###########################################=###########################################
Script :
cmd=${1}
count(){
i=1
starter=$((time for ((i;i<5;i++)) ; { eval ${cmd} > /dev/null ; }) 2>&1)
: ${starter/?user*/} ; echo $_
}
to_s(){
: ${pr_cmd//m*} ; pr_cmd_2=$(bc <<<"$_ * 60") ; : ${pr_cmd//*m} ; echo "${_//s} + $pr_cmd_2 " | bc
}
{
cmd_time_1=$(
pr_cmd=$(count)
to_s
)
cmd_time_2=$(
pr_cmd=$(cmd=${2} ; count)
to_s
)
echo "$(echo "scale=2 ; ${cmd_time_1} * 100 / ${cmd_time_2}" | bc | sed -r 's/(^\.)/0\1/g')"%
}