Я пишу сценарий и хочу передать результаты bc
в переменную. Я объявил 2 переменные ( var1
и var2
) и дал им значения. В моем сценарии я хочу передать результаты из bc
другой переменной скажем, var3
чтобы я мог работать с var3
другими вычислениями. До сих пор я был в состоянии записать результат в файл, который не то, что я ищу, а также я смог отобразить результат в терминале, но я просто хочу передать результат в переменную в данный момент, чтобы Я могу работать с этой переменной.
echo "scale=2;$var1/var2" | bc
bash
scripts
environment-variables
bc
Шаолинь
источник
источник
|
команда справа от канала выполняется в подоболочке, и для открытия новой подоболочки требуются ресурсы (это похоже на открытие нового экземпляра bash для выполнения этой команды). Если вы можете избежать этого, избегайте этого. В данном случае передача командыecho
tobc
запускает командуbc
в подоболочке и в некотором смысле замедляется (без обид), поскольку bash имеет замечательную конструкцию here-string,<<<
позволяющую избежать таких глупых вещей, как эти./bin/sh
(dash) вместо bash, но dash не имеет<<<
.time for i in {1..10000}; do : <<< ""; done
сtime for i in {1..10000}; do echo "" | : ; done
, вы увидите резкое различие. Тогда вы правы, heredoc немного быстрее, чем Herestring. Но это более неудобно печатать как однострочник.Подстановка команд сохраняет выходные данные команды в переменную.
источник