2013-06-26 3 views
0

QNX를 사용하여 일부 파일을 수정 한 다음 해당 파일에 대한 정보를 출력하고 있습니다. 정보 - - stauslinux 변수를 명령 행 출력으로 설정

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 

내가 할 일을 할 수있는 비교를 필요로하는 이름 값 perfomr dd 명령 출력 파일보다 작은 경우 디렉토리 에있는 특정 파일을 찾을 수 : 프로세스는 다음과 유사합니다 dd 출력의 16 진수 값과 16 진수 숫자 사이의 비교 또는 정수 비교.

답변

0

당신은 따옴표`에 둘러싸 변수에 특정 명령의 표준 출력으로 전송 결과를 저장할 수 있습니다 :

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

사용 역 따옴표를

즉, 유닉스 변수로 유닉스 명령의 출력을 캡처
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 단계로 무엇을하려하는지 가정합니다). 나는 hd를 충분히 잘 모른다 - 매뉴얼 페이지를 읽는다.