私が何をしているのか教えてください。
私は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
ここでは、コマンドの結果に応じて終了コードを設定しようとしており、使用しないため、cmp
角test
かっこを削除する必要があります。