2015-06-11 193 views
0

我剛剛使用shell進行編程,想問我的代碼出了什麼問題?未找到Shell腳本命令錯誤

#!/bin/bash 
#DHT11 
SCRIPT="/var/www/ErnestynoFailai/scripts/DHT 11 4" 
#DHT22 
#SCRIPT="/root/to/folder/DHT 22 4" 
#AM2302 
#SCRIPT="/root/to/folder/DHT 2302 4" 
HUMIDITY=`$SCRIPT | grep "Temp" | awk -F " " '{print $7}'` 
TEMPRATURE=`$SCRIPT | grep "Temp" | awk -F " " '{print $3}'` 
#-a = AND = && 
while [ $HUMIDITY=="" -a $TEMPRATURE=="" ] 
do 
    $HUMIDITY=`$SCRIPT | grep "Temp" | awk -F " " '{print $7}'` 
    $TEMPRATURE=`$SCRIPT | grep "Temp" | awk -F " " '{print $3}'` 
done 

echo "$HUMIDITY" 
echo "$TEMPRATURE" 

我越來越:

line 14 or 15 =26: or =: command not found... 
+0

'type -p/var/www/ErnestynoFailai/scripts/DHT'的輸出是什麼? – jmdeldin

回答

0

有兩個問題:

  1. 這些線不返回任何東西,或至少一個字符串:

    HUMIDITY=`$SCRIPT | grep "Temp" | awk -F " " '{print $7}'` 
    TEMPRATURE=`$SCRIPT | grep "Temp" | awk -F " " '{print $3}'` 
    

這導致=: command not found錯誤。

  • 你而條件必須

    while [[ $HUMIDITY == "" && $TEMPRATURE == "" ]] 
    
  • 最後,雖然不會造成問題,TEMPERATURE拼寫錯誤,這可能會導致您解憂以後。

    +0

    謝謝,它的工作和停止:)嗯..外殼腳本是如此奇怪:D – Ernestyno

    +0

    太棒了!是的,與更常見的編程語言相比,shell腳本是瘋狂的,並不直觀,尤其是,當涉及到條件時(例如括號,以及是否一個或兩個,具有不同的含義)。 – jmdeldin

    +0

    更多的問題在於'$ SCRIPT | grep「Temp」| awk -F「」'{print $ 7}''我怎樣才能在一條線上寫字?得到溫度和哼聲?並檢查它? – Ernestyno

    0

    變量有沒有導致$被分配:

    HUMIDITY=`$SCRIPT | grep "Temp" | awk -F " " '{print $7}'` 
    TEMPRATURE=`$SCRIPT | grep "Temp" | awk -F " " '{print $3}'` 
    
    +0

    謝謝,但現在每次循環; /爲什麼當HUMIDITY和TEMPERATURE不爲空時它不會停止? – Ernestyno