Estoy escribiendo un script y me gustaría pasar los resultados bca una variable. He declarado 2 variables ( var1y var2) y les he dado valores. En mi script, quiero pasar los resultados de bcotra variable, por ejemplo, var3para poder trabajar con var3otros 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 unechotobcejecutará el comandobcen 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 : <<< ""; donecontime 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