Estoy escribiendo un script y me gustaría pasar los resultados bc
a una variable. He declarado 2 variables ( var1
y var2
) y les he dado valores. En mi script, quiero pasar los resultados de bc
otra variable, por ejemplo, var3
para poder trabajar con var3
otros cálculos. Hasta ahora he podido escribir el resultado en un archivo que no es lo que estoy buscando y también he podido repetir el resultado en el terminal, pero solo quiero pasar el resultado a una variable en este momento para que Puedo trabajar con esa variable.
echo "scale=2;$var1/var2" | bc
fuente
|
el comando a la derecha de la tubería se ejecuta en una subshell, y se requieren recursos para abrir una nueva subshell (es como abrir una nueva instancia de bash para ejecutar ese comando). Si puedes evitarlo, evítalo. Aquí, canalizar unecho
tobc
ejecutará el comandobc
en una subshell y es, en cierto sentido, retrasado (sin ofender), ya que bash tiene la maravillosa construcción here-string<<<
para evitar cosas estúpidas como estas./bin/sh
(guión) en lugar de bash, pero el guión no tiene<<<
.time for i in {1..10000}; do : <<< ""; done
contime for i in {1..10000}; do echo "" | : ; done
, verá una diferencia dramática. Entonces tienes razón, un heredoc es un poco más rápido que una herejía. Pero es más incómodo escribir como una línea.La sustitución de comandos almacena la salida de un comando en una variable.
fuente