2014-08-29 153 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'这不是空的,因此成功块将始终执行。