doublench21
@doublench21

Что означает условие?

Что означает условие :

# Simplest test

printf '3\n1 0 0\n0 1 0\n0 0 1\n3\n1\n4\n' >lss_"$SSNN"_in.txt
printf '3\n3.000000000\n1.000000000\n4.000000000\n' >lss_"$SSNN"_out_correct.txt

if ! $LSS &>lss_log.txt


Сам файл:

#!/bin/bash

# Linear system solver test script 0 (basic interface test).
# Good for windows/cygwin/bcc32 environment with makefile derived from makefile_00_00. 
# In any other environment should work after LSS parameter fixing.


# Defaults

SSNN=19_07
LSS=./lss
LSS_noEX=./lss

# Parsing input parameter

if [ $# -eq 1 ]
then
   SSNN=$1
fi

if [ $# -gt 1 ]
then
   echo "Usage: lss_test_0.sh [SS_NN]"
   exit 1
fi

if ! echo $SSNN | grep '[0-9][0-9]_[0-9][0-9]' >/dev/null
then
   echo "Bad parameter format $SSNN ($LINENO)!"
   echo "Usage: lss_test_0.sh [SS_NN]"
   exit 1
fi


# Checking file presence

function check_file_presence
{
   if [ ! -f $1 ]
   then
      echo "File $1 not found ($LINENO)!"
      exit 1
   fi
}

check_file_presence main_lss_$SSNN.c
check_file_presence lss_$SSNN.c
check_file_presence lss_$SSNN.h
check_file_presence makefile_lss_$SSNN


# Compiling using user makefile

if ! make -f makefile_lss_$SSNN
then
   echo "Error in compilation ($LINENO)!"
   exit 1
fi

if [ ! -f $LSS ]
then
   if [ ! -f $LSS_noEX ]
   then
      echo "Warning: linux executable name used, renaming ($LINENO)!"
      mv $LSS_noEX $LSS
   else 
      echo "Error: $LSS not found after compilation ($LINENO)!"
      exit 1
   fi
fi


# Simplest test

printf '3\n1 0 0\n0 1 0\n0 0 1\n3\n1\n4\n' >lss_"$SSNN"_in.txt
printf '3\n3.000000000\n1.000000000\n4.000000000\n' >lss_"$SSNN"_out_correct.txt

if ! $LSS &>lss_log.txt
then
   echo "Execution of simplest test failed ($LINENO)!"
   exit 1
fi

if [ ! -f lss_"$SSNN"_out.txt ]
then
   echo "Output file not found for simplest test ($LINENO)!"
   exit 1
fi

if ! diff -b lss_"$SSNN"_out.txt lss_"$SSNN"_out_correct.txt >/dev/null
then
   echo "Bad output for simplest test ($LINENO)!"
   exit 1
fi


# Checking for parameters support

PARAM_LIST="-d -e -p -t"

for p in $PARAM_LIST
do
   rm lss_"$SSNN"_out.txt

   if ! $LSS lss_"$SSNN"_in.txt lss_"$SSNN"_out.txt $p &>lss_log.txt
   then
      echo "Error in execution with parameter $p ($LINENO)!"
      exit 1
   fi

   if [ ! -f lss_"$SSNN"_out.txt ]
   then
      echo "Output file not found for execution with parameter $p ($LINENO)!"
      exit 1
   fi

   if ! diff -b lss_"$SSNN"_out.txt lss_"$SSNN"_out_correct.txt >/dev/null
   then
      echo "Bad output for for execution with parameter $p ($LINENO)!"
      exit 1
   fi
done

BAD_PARAM_LIST="-ZlobniiBuratino --OchenZlobniiBuratino"

for p in $BAD_PARAM_LIST
do
   if $LSS lss_"$SSNN"_in.txt lss_"$SSNN"_out.txt $p &>lss_log.txt
   then
      echo "Launch with bad parameter $p succeed ($LINENO)!"
      exit 1
   fi
done


# Checking for — compileablilty

gcc main_lss_$SSNN.c lss_$SSNN.c -o lss_bcc>bcc32_compile.txt
if [ $? -ne 0 ]
then
   echo "Error in C mode compilation ($LINENO)!"
   exit 1
else
   rm -rf *.o lss_bcc
fi

echo "Test 0 finished successfully for $SSNN"
exit 0
  • Вопрос задан
  • 100 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Что означает условие?
if ! $LSS &>lss_log.txt

Если запуск программы $LSS (определённой в начале скрипта как ./lss) закончился неудачно (ненулевым кодом выхода), выполнить тело оператора if.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы