2013-12-19 32 views
1

在RES下面的腳本中總是返回任何東西;不知道我做錯了什麼。aix shell遇到函數返回值問題

在此先感謝。

#!/bin/sh 
set -x 
chk_for() { 
    RES=0 
    RES= $(head -1 $1 | fgrep -c "Formula" >&2) 
    echo "@@@@" || $RES 
    return $RES 
    } 

for X in /home/wstandke/webcatstats/rep/AnalysisWork/*; do 
    chk_for "$X" 

    if [$? == 1] 
     then 
      echo "1st line is heading" 
      file=$(basename $X) 
      echo "fullname=" || $X 
      echo "filename=" || $file 
      mv $X /tmp/$file 
      sed 1d /tmp/$file > $X 
      rm /tmp/$file 
    fi 
done 
cat /home/wstandke/webcatstats/rep/AnalysisWork/* >/tmp/Analysis.report 
+0

AIX'/#/斌/ sh'幾乎可以肯定是原來的Bourne Shell中,不支持'$(cmd_substitution)'。嘗試刪除空間,按照下面的方式使用'backtics'來代替。最好理解正在處理的內容,打開shell跟蹤功能set -vx來查看變量擴展。祝你好運。 – shellter

+1

@shelter不......可能不是。/bin/sh經常是ksh。/bin/bsh(我記得)是Bourne Shell。我記得,有一個選項可以設置它。我相信一個選項甚至可以將其設置爲ksh93。 – pedz

回答

2

您的fgrep輸出重定向到stderr,因此不能RES給予任何價值。

而且,不知道這是問題,但有RES=後空白可能分配空白以RES

嘗試改變線問題:

RES=$(head -1 $1 | fgrep -c "Formula") 
+0

+1表示等號和要分配的值之間的空格。 –