2016-06-11 4 views
0

Это связано с мой предыдущий вопрос: Making shapes with linux shell scriptГипотенуза От Shell Script Linux

Я пытаюсь написать программу сценария оболочки с VIM, что данные стороны А и В теоремы Пифагора, она обеспечит C. Вот мой код:

echo -n "Enter A: " 
read A 
echo -n "Enter B: " 
read B 
BSquared=$(($B**2)) 
ASquared=$((A**2)) 
CSquared=$(($B+$A)) 
Hypot='echo"scale=2;sqrt($CSquared)"|bc' 
echo ' 
    + 
    |\ 
    | \ C 
A | \ 
    | \ 
    +---- 
    B ' 

echo "A = $A" 
echo "B = $B" 
echo "C = $Hypot" 

Часть треугольника предназначена только для развлечения. Единственное, что случилось с моим сценарием является то, что на линии:

echo "C = $Hypot" 

выход следующим образом:

C = "scale=2;sqrt($CSquared)"|bc 

Другими словами, код из сценария. Может ли кто-нибудь сказать мне, что я делаю неправильно?

+0

Возможный дубликат [Как установить переменную, равную выходу из команды в Bash?] (Http://stackoverflow.com/questions/4651437/how-to-set-a-variable-equal -to-the-output-from-a-command-in-bash) – tripleee

+0

Почему вы включили vim здесь? Вы в порядке с решением в vimscript? – SibiCoder

ответ

1

Для command substitution вы должны использовать backticks или $() синтаксис, а не одинарные кавычки.

Вы также должны отделить команду echo от ее аргумента, добавив после нее пробел.

Заменить:

Hypot='echo"scale=2;sqrt($CSquared)"|bc' 

с:

Hypot=`echo "scale=2;sqrt($CSquared)"|bc` 

или для лучшей читаемости:

Hypot=$(echo "scale=2;sqrt($CSquared)"|bc) 
+0

Это исправлено! Большое спасибо! – sodhosdh

0

Если оболочка Баш, нет никакой необходимости эхо:

Hypot=$(bc <<< "scale=2;sqrt($CSquared)") 
Смежные вопросы