Piszę skrypt i chciałbym przekazać wyniki z bc
do zmiennej. Zadeklarowałem 2 zmienne ( var1
i var2
) i podałem im wartości. W moim skrypcie chcę przekazać wyniki z bc
innej zmiennej powiedz var3
, żebym mógł pracować z var3
innymi obliczeniami. Do tej pory byłem w stanie zapisać wynik do pliku, który nie jest tym, czego szukam, a także byłem w stanie wyświetlić wynik w terminalu, ale chcę tylko przekazać wynik do zmiennej w tej chwili, aby Mogę pracować z tą zmienną.
echo "scale=2;$var1/var2" | bc
bash
scripts
environment-variables
bc
Shaolin
źródło
źródło
|
polecenie po prawej stronie potoku jest wykonywane w podpowłoce i wymaga zasobów do otwarcia nowej podpowłoki (to tak, jakby otworzyć nową instancję bash, aby wykonać to polecenie). Jeśli możesz tego uniknąć, unikaj go. Tutaj, rurociągiecho
siębc
będzie uruchomić poleceniebc
w podpowłoce i jest, w pewnym sensie, retarded (bez obrazy), ponieważ bash ma wspaniałą konstrukcję tutaj string<<<
aby uniknąć głupich rzeczy jak te./bin/sh
(myślnik) zamiast bash, ale myślnik nie ma<<<
.time for i in {1..10000}; do : <<< ""; done
ztime for i in {1..10000}; do echo "" | : ; done
, zobaczysz dramatyczną różnicę. Masz rację, heredok jest nieco szybszy niż herestring. Ale trudniej jest pisać w jednym wierszu.Podstawienie polecenia przechowuje dane wyjściowe polecenia w zmiennej.
źródło