2014-11-08 25 views
0

請幫助我。我無法實現IF內WHILE:無法實現如果在迴路內

while IFS=';' read one two three; 
do 

if (($three >= 1)) #this is a line that i can't understand 

then X=$(for i in $two 
    do BIN=$(echo "obase=10; ibase=16; $i" | bc) 
    echo $BIN 
    done) 
fi 
done < /testcsv.csv 

和輸出是:

./test.sh: line 34: ((: <= 1 : syntax error: operand expected (error token is "<= 1 ") 
+1

而你寫的究竟是哪一部分是李ne 34? – 2014-11-08 22:18:34

+0

你確定你提供了足夠的信息來閱讀嗎?當出現提示時,應該輸入用分號分隔的三個詞,最後一個詞應該是一個數字(很可能這就是你錯過了獲得錯誤的地方),第二個詞應該是由空格分隔的十六進制數字列表。但說實話,這是一段可怕的代碼,它受代碼注入的影響。不要使用它。 – 2014-11-08 22:23:23

回答

0

在bash爲IF語法將是以下的東西:

if [ conditional expression ] 

在你案例:

if [ $three >= 1 ] 
+1

他的語法很好。 – 2014-11-08 22:24:38

+0

這是?我用他的語法做了一個簡短的測試(OS X Bash 3.2.53),並得到了_(錯誤標記是..)_事物。在我的例子中用方括號解決。 – mattias 2014-11-08 22:27:20

+0

@mattias在測試中,'> ='進行詞彙排序測試。相反,在現代bash中,'(($ three> = 1))'進行數值比較。如果'((...))'在OSX上不可用,那麼OP可能需要'[「$ 3」-ge 1]'。 – John1024 2014-11-08 22:38:57