Unix: cmp コマンドに関する問題

Unix: cmp コマンドに関する問題

私が何をしているのか教えてください。

私はLinuxとSunOSシステムの両方に対して基本的なオペレーティングシステムプロセスを実行するスクリプトを実行しています。実行される最初のディレクトリは sol0 です。このスクリプトは sol0 の出力を一時ファイルに配置します。

次のようになります。

-----------------------
proc    1 response time =     67
proc    2 response time =    114
-----------------------
average response time   =     90
completion_time         =    170
total idle time         =     32
percent idle time       =     18%
-----------------------

sol0の出力を保存するために現在のディレクトリにファイルを生成するスクリプトを編集しています。後でこのファイルを各ディレクトリの出力と比較したいと思います。

私のcmpコマンドは、別の名前でsol0のコピーを作成しても出力が一致しないと言います。すべて同じ出力を持っています!

コマンドの使用方法は次のとおりです。まず、スクリプトに関するいくつかの詳細を見てみましょう。

私の変数:

STUID=$1
PATH=${PATH}\:.
TMPFILE=tempfile
GDIR=`pwd`
OSNAME=`uname -s`
LOG=${GDIR}/results/${STUID}-${OSNAME}-X.log
DATE=`date`
TT=/dev/tty
file="./"

スクリプトが実行する関数を呼び出すには:

(  if [ ${OSNAME} = SunOS ] ; then
    ulimit 65
    ./sim >>${TMPFILE} 2>${TMPFILE}2 &

   else
    ulimit 35
    ./sim >>${TMPFILE} 2>${TMPFILE}2 &
   fi
  )  

cmdコマンド:

if  [ ${STUID} = sol0 ]; then
    if  [ ${OSNAME} = SunOS ]; then 
          echo " Making SunOS compare file. " > ${TT}
          echo > ${GDIR}/compares
          echo " Created file. " > ${TT}
          cp ${TMPFILE} ${GDIR}/compares
    else
        echo " Making Linux compare file. " > ${TT}
    echo > ${GDIR}/comparel
    echo " Created file. " > ${TT}
    cp ${TMPFILE} ${GDIR}/comparel
    fi
  else
    echo " This is not sol0. " > ${TT}
  fi

  if [ ${OSNAME} = Linux ]; then
    if [ ${STUID} != sol0 ]; then
      if [ cmp ${TMPFILE} ${GDIR}/comparel ]; then
        echo "${STUID} Linux output matches the Linux output of sol0." > ${TT}
      else
        echo "${STUID} Linux output does not match the Linux output of sol0." >${TT}
      fi  
   else
      echo "This is sol0, no comparing will be done." >${TT}
   fi
  else
   echo "This is running on SunOS. " >${TT}
  fi

答え1

具体的には、コマンドを見て、cmp次を置き換えます。

if [ cmp ${TMPFILE} ${GDIR}/comparel ]; then

そして:

if cmp "${TMPFILE}" "${GDIR}/comparel"; then

[このコマンド(とも呼ばれる)は、さまざまな条件(ファイルの存在、文字列が空であるなど)のいずれかに基づいて終了コードを設定したい場合に使用できます。testここでは、コマンドの結果に応じて終了コードを設定しようとしており、使用しないため、cmptestかっこを削除する必要があります。

関連情報