2013-06-26 89 views
0

我正在使用QNX來修改一些文件,然後輸出這些文件的一些信息。這個過程是類似以下內容: 找到一個目錄 某些文件如果名稱小於值 perfomr DD命令 輸出文件 - 信息 - 居留制設置一個linux變量到命令行輸出

find $DIR -type n \(! -iname "*sub*" \) -exec basename {} | 
while read fname 
do 
    if [ $(printf '%d\n' 0x$fname) -lt 31 ] #if file is < 31 
    then 
     dd bs=1 skip=67 count=1 if=/path/$fname/random of=/tmp/$fname 
     echo -n " "$fname"  " #output file name 
     TEMP=$(</tmp/$fname)  #temporary file is in 
     hd -A x /tmp/$fname | gawk '{printf $2}' 

     if [ $fname == 06 ]; then 
      COM="Testing on 06" # this is temporary 
     elif [ $fname == 08 ]; then 
      case "?? hex value of $2 ?? in 
       00) COM="DOWN" ;; #again, not sure what works 
       0x01) COM="UP" ;; 
       02) COM="Pass Through Mode" ;; 
       *) COM="ERROR" ;; 
      esac 
     else 
      if [[ $STATE = 0x00 ]]; then #doesn't work either 
       COM="DOWN" 
      elif [ "(hd -A x /tmp/$fname | gawk '{printf $2}')" == 0x01 ]; then 
       COM="UP" 
      else 
       COM="ERROR $STATE " 
      fi 
     fi 

     echo "  " $COM 



    fi 
done 

我需要一個比較能工作在dd輸出的十六進制值與十六進制數字之間,或者甚至是整數比較。

回答

0

可以存儲結果,由封閉發送到從變量特定命令的stdout在`報價:

linecount = `cat text.txt|wc -l` 
0

使用反引號到UNIX命令的輸出捕獲到一個UNIX變量,即

t=`/bin/date` 
    echo the time is $t 

你或許可以做這樣的事情

firstByte = `dd bs=1 skip=67 count=1 if=/path/$fname/random of=- | hd -A x` 

雖然你將需要一些額外的參數hd來壓制地址信息(我認爲這是你想要做的gawk步驟。我不太瞭解高清 - 閱讀手冊頁。

相關問題