Shell script para verificar comando + rápido.

1. Shell script para verificar comando + rápido.

Dilan Severino de Oliveira
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')"%

}


  


2. Re: Shell script para verificar comando + rápido.

Leomar de Oliveira
leoCCB

(usa Slackware)

Enviado em 26/06/2023 - 04:25h

qual seria o valor do parâmetro $1 para o eval resolver? Seria esse um dos comandos de voz?



3. Resposta

Dilan Severino de Oliveira
dilan1998

(usa Debian)

Enviado em 26/06/2023 - 04:54h


O valor de $1 assim como $2 deve ser qualquer comando, exemplo ;

bash script.sh "cat /etc/passwd" "echo $(</etc/passwd)"


4. Re: Shell script para verificar comando + rápido.

Leomar de Oliveira
leoCCB

(usa Slackware)

Enviado em 26/06/2023 - 15:49h


dilan1998 escreveu:


O valor de $1 assim como $2 deve ser qualquer comando, exemplo ;

bash script.sh "cat /etc/passwd" "echo $(</etc/passwd)"

Acho que entendi... veja meus testes:
set "echo $(</etc/passwd)"
com aspas duplas, e pedindo
echo $1
pra ver o primeiro parâmetro o terminal me mostra o arquivo passwd
já com aspas simples
set 'echo $(</etc/passwd)'
e pedindo echo $1
echo $(</etc/passwd)
pq aspas simple mostram literalmente o texto dado,
então tenta lá
script.sh 'cat /etc/passwd' 'echo $(</etc/passwd)'
com aspas simples





5. Resposta

Dilan Severino de Oliveira
dilan1998

(usa Debian)

Enviado em 26/06/2023 - 22:32h


Opa Leo, cara muito obrigado pela atenção, já tentei isso antes /o\ kkkkkk, menos com set, vou tentar assim que conseguir usar o terminal e te atualizo, se quiser colaborar com esse desenvolvimento, pretendo informar o script mais rápido como output e comparar, talvez inserir a opção de usar 2 + comandos e comparar todos, mas como tudo, tem que começar do começo, é uma Poc kkkkkk


6. Re: Shell script para verificar comando + rápido.

Leomar de Oliveira
leoCCB

(usa Slackware)

Enviado em 27/06/2023 - 00:30h


cara... não sei programar kkkkk só sou curioso mesmo, então fico devendo essa de te ajudar... tô aqui é pra aprender.


7. Re: Shell script para verificar comando + rápido.

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 28/06/2023 - 00:52h

Boa noite Dilan.
Segue sugestão:

#!/usr/bin/env bash
c1=${1};
c2=${2};

i1=${EPOCHREALTIME/,/.};
echo -n 'cmd01:';$c1
f1=${EPOCHREALTIME/,/.};

i2=${EPOCHREALTIME/,/.};
echo -n 'cmd02:';$c2
f2=${EPOCHREALTIME/,/.};

t1=$(bc <<< "$f1-$i1");
t2=$(bc <<< "$f2-$i2")
echo -e "T1:${t1/\./0.}\nT2:${t2/\./0.}"
awk '{if($1>$2) printf "cmd01>cmd02: %f%%\n",($1/$2)*100;else printf "cmd02>cmd01: %f%%\n",($2/$1)*100 }' <<< "$t1 $t2"

./script.sh 'printf %(%s)T\n' 'date +%s'
cmd01:1687924282
cmd02:1687924282
T1:0.000503
T2:0.003447
cmd02>cmd01: 685.288270%


______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/ | sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________



8. Resposta

Dilan Severino de Oliveira
dilan1998

(usa Debian)

Enviado em 30/06/2023 - 01:06h


Obrigado pela sugestão mestre!

Agradeço o empenho pelo seu desenvolvimento, poderia me ajudar a entender como passar o primeiro e segundo parâmetro como $1,$2...

Mas de uma forma que o shell não expanda nada, que receba como uma string, uma vez que vai receber awk's muito loucos, sed's muito loucos kkkkk.


9. Re: Shell script para verificar comando + rápido.

Leomar de Oliveira
leoCCB

(usa Slackware)

Enviado em 30/06/2023 - 13:50h


dilan1998 escreveu:


Obrigado pela sugestão mestre!

Agradeço o empenho pelo seu desenvolvimento, poderia me ajudar a entender como passar o primeiro e segundo parâmetro como $1,$2...

Mas de uma forma que o shell não expanda nada, que receba como uma string, uma vez que vai receber awk's muito loucos, sed's muito loucos kkkkk.

tentou proteger p $cmd com aspas simples ou duplas? Tenta lá, não custa nada kkkk
eval ${cmd} > /dev/null
por
eval "${cmd}" > /dev/null ou
eval '${cmd}' > /dev/null
ou passar os parâmetros protegidos... creio que o segredo está nas aspas duplas ou simples
aqui ficou
Com='echo $(</etc/passwd)'
eval "$Com"
e me mostrou o arquivo, só que com as linhas juntas, mas como vai pro nulo, não tem problemas...






10. Resposta

Dilan Severino de Oliveira
dilan1998

(usa Debian)

Enviado em 30/06/2023 - 19:27h


Sim, inclusive declarando
bash script.sh "'param1'" "'param2'"


11. Re: Shell script para verificar comando + rápido.

Leomar de Oliveira
leoCCB

(usa Slackware)

Enviado em 30/06/2023 - 22:52h

dilan1998 escreveu:


Sim, inclusive declarando
bash script.sh "'param1'" "'param2'"


mas q danadinho esse "pograma"... mesmo aspeando o $1 no script não rola? e fora do script funciona q uma beleza, e nele não vai nem a pau kkkkk ... no more ideas... vou esperar uma aí mais experiente q já tenha passado por algo parecido, e vou continuar seguindo o tópico em silêncio


12. Re: Shell script para verificar comando + rápido.

Leomar de Oliveira
leoCCB

(usa Slackware)

Enviado em 01/07/2023 - 20:57h


dilan1998 escreveu:


Sim, inclusive declarando
bash script.sh "'param1'" "'param2'"


Maninho, mais um palpite azedo... andei sofrendo com aspas, contrabarras e parâmetros também, e funcionou com o eval duplo:
eval eval meu comando
aí ele deu uma passada a mais, lembrei do teu problema... não custa tentar



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts