2016-06-11 103 views
0

這涉及到我剛纔的問題: Making shapes with linux shell script斜邊從Shell腳本的Linux

我試着寫與VIM,鑑於A側和勾股定理的B,它將提供C.一個shell腳本程序這裏是我的代碼:

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從命令到輸出) – tripleee

+0

你爲什麼在這裏包含vim?你用vimscript解決方案嗎? – SibiCoder

回答

1

對於command substitution,必須使用反引號或$()語法,而不是單引號。

您還必須將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

如果shell 慶典,沒有必要爲回聲

Hypot=$(bc <<< "scale=2;sqrt($CSquared)")