2012-09-26 33 views
1

我想用Munin來顯示我的數據。我從ttyACM0獲取數據,它是一個Arduino UNO。我使用shell腳本。但是我遇到了一個問題,我不能用'cat/dev/ttyACM0'來獲取數據。 這裏的問題是,程序停止在 '貓的/ dev/ttyACM0',Munin in shell腳本

+ . /usr/share/munin/plugins/plugin.sh 
+ '[' '' = autoconf ']' 
+ '[' '' = config ']' 
++ cat /dev/ttyACM0 

有時還有另外一個問題,那就是 '行= $(貓的/ dev/ttyACM0 | awk的-F:'{打印$ 2}')'命令未找到。任何人有想法?非常感謝。

這裏是我的代碼的一部分,

if [ "$1" = "config" ]; then 
    echo 'graph_title Temperature of board' 
    echo 'graph_args --base 1000 -l 0' 
    echo 'graph_vlabel temperature(°C)' 
    echo 'graph_category temperature' 
    echo 'graph_scale no' 
    echo 'graph_period second' 
    echo 'graph_info This graph shows the temperature of board' 
    LINE = $(cat /dev/ttyACM0 | awk -F: '{print $2}') 

    for i in 0 1 2 3 4; do 
     case $i in 
      1) 
      TYPE="Under PCB" 
      ;; 
      2) 
      TYPE="HDD" 
      ;; 
      3) 
      TYPE="PHY" 
      ;; 
      4) 
      TYPE="CPU" 
      ;; 
      5) 
      TYPE="Ambience" 
      ;; 
     esac 
     name=$(clean_name $TYPE) 
     if ["$TYPE" != "NA"]; then 
      echo "temp_$name.label $TYPE"; 
     fi 
    done 
    exit 0 
fi 

LINE = $(cat /dev/ttyACM0 | awk -F: '{print $2}') 
for i in 0 1 2 3 4; do 
    case $i in 
     1) 
     TYPE="Under PCB" 
     VALUE=$(echo "$LINE" | awk '{print $1}') 
     ;; 
     2) 
     TYPE="HDD" 
     VALUE=$(echo "$LINE" | awk '{print $2}') 
     ;; 
     3) 
     TYPE="PHY" 
     VALUE=$(echo "$LINE" | awk '{print $3}') 
     ;; 
     4) 
     TYPE="CPU" 
     VALUE=$(echo "$LINE" | awk '{print $4}') 
     ;; 
     5) 
     TYPE="Ambience" 
     VALUE=$(echo "$LINE" | awk '{print $5}') 
     ;; 
    esac 

    name=$(clean_name $TYPE) 
    if ["$TYPE" != "NA"]; then 
     echo "temp_$name.value $VALUE"; 
    fi 
done 

回答

2

=符號的兩邊刪除空格。他們不允許進行變量賦值。

將其更改爲:

LINE=$(cat /dev/ttyACM0 | awk -F: '{print $2}') 
2

與LINE錯誤的問題是,你必須圍繞「=」字符的空間。它必須是LINE=...

如果/dev/ttyACM0是不表明EOF,那麼它會等待更多的閱讀和awk將等待永遠不會到來的EOF的設備。你期望/dev/ttyACM0產生什麼?如果在控制檯上輸入cat /dev/ttyACM0會發生什麼情況?

還注意貓的無用用途。更好地利用

LINE=$(awk -F: '{print $2}' /dev/ttyACM0) 

而且你必須if ["$TYPE" != "NA"]; then增加空間,所以它讀取

if [ "$TYPE" != "NA" ]; then