2014-08-29 109 views
0

我正在嘗試從串行端口逐行讀取。下面的代碼工作,但我不斷收到一個我不明白的錯誤。任何線索?在bash腳本中讀取問題

這是代碼

while read line ; do 
    if [ "$(line)"=='OFF' ] ; 
     then 
     echo "that was actually OFF" 
    fi 
    done < /dev/ttyACM0 

這就是錯誤:

that was actually OFF 
    ./reading_loop.sh: line 9: line: command not found 
+3

$ line或$ {line}而不是$(line) – Ronald 2014-08-29 11:15:46

+0

啊真的!非常感謝! – user1835630 2014-08-29 11:20:43

+0

@Ronald爲什麼不把它作爲答案? – shadowtalker 2014-08-29 11:48:32

回答

1
if [ "$(line)"=='OFF' ] ; 
  1. $(...)執行括號中的內容並返回標準輸出。如果您沒有命名爲line的命令,則會看到「命令未找到」錯誤消息,並且$()將返回空字符串。
  2. [...]根據給定的參數數量做不同的操作。由於您只給出一個單詞,因此[命令僅檢查字符串是否爲空。在這種情況下,[將看到""=='OFF'這不是空的,因此成功塊將始終執行。