2017-04-10 57 views
0

我試圖讓if語句與bc一起使用來確定文本文件中的數字是否在數字範圍內或其外部。我有條件(echoes),我希望在滿足(或不滿足)標準時觸發。IF語句對於數字範圍(standard_in)1:語法錯誤

climo.diff文件:

17.3 

bash代碼:

check=`cat climo.diff` 

if (($(bc <<< "${check} < -7.0" || "${check} > 7.0"))); 
then 
echo "CAUTION: Outside acceptable range." 
else 
echo "Within acceptable range." 
fi 

我不斷收到以下錯誤

(standard_in) 1: syntax error 
+0

事實上,語法是錯誤的。你在'$()'的執行中使用'||'運算符。基本上你試圖調用程序'「$ {check}> 7.0」'這是沒有任何意義的。我不是'bc'的專家,但是我會做'like bc <<<「$ {check} <-7.0」||。 bc << < "${check} > 7.0「; then'。也許它可以在一個'bc'調用而不是兩個。 – vdavid

回答

3

||需要放在引號內,以便它被認爲是bc的輸入的一部分,而不是shell運算符將bc命令與無效的命令名分開。

if (($(bc <<< "${check} < -7.0 || ${check} > 7.0"))); 

然後

+0

我繼續得到相同的錯誤,但是將雙引號的'||'放在雙引號中似乎有修復了if語句,它現在可以用於查詢數字 – arnpry

+0

'check'的實際值是什麼?錯誤信息來自'bc'。 – chepner

+0

'$ {check}'的實際值是'17.3' 。'bc'可以處理浮點小數,所以我不認爲這是問題。 – arnpry