Estou escrevendo um script e gostaria de passar os resultados bc
para uma variável. Eu declarei 2 variáveis ( var1
e var2
) e lhes dei valores. No meu script, quero passar os resultados de bc
para outra variável, digamos, var3
para que eu possa trabalhar com var3
outros cálculos. Até agora, consegui gravar o resultado em um arquivo que não é o que estou procurando e também consegui ecoar o resultado no terminal, mas só quero passar o resultado para uma variável no momento, para que Eu posso trabalhar com essa variável.
echo "scale=2;$var1/var2" | bc
fonte
|
o comando à direita do canal é executado em um subshell, e são necessários recursos para abrir um novo subshell (é como abrir uma nova instância do bash para executar esse comando). Se você pode evitá-lo, evite-o. Aqui, canalizarecho
parabc
executar o comandobc
em um subshell e é, em certo sentido, retardado (sem ofensa), já que o bash tem a maravilhosa construção aqui-string<<<
para evitar coisas estúpidas como essas./bin/sh
(dash) em vez de bash, mas o dash não possui<<<
.time for i in {1..10000}; do : <<< ""; done
comtime for i in {1..10000}; do echo "" | : ; done
, você verá uma diferença dramática. Então você está certo, um heredoc é um pouco mais rápido que um herestring. Mas é mais complicado digitar como uma linha.A substituição de comando armazena a saída de um comando em uma variável.
fonte