скрипт оболочки tc: неопределенная переменная - PullRequest
0 голосов
/ 21 июля 2011

Может кто-нибудь сказать мне, что я делаю неправильно с установкой flag1 .. я получаю ошибку flag1: неопределенная переменная.

if($notLoaded1 > 0) then
  echo "Rows not loaded due to data errors in first load: $notLoaded1"
  set flag1=1
endif

if($notLoaded2 > 0) then
  echo "Rows not loaded due to data errors in second load: $notLoaded2"
  set flag2=1
endif

if($notLoaded3 > 0) then
  echo "Rows not loaded due to data errors in third load: $notLoaded3"
  set flag3=1
endif

echo $flag1
echo $flag2
echo $flag3

есть ли способ проверить все три из них в одном операторе if или вместо использования 3 в операторе if

if ($flag1 > 0) then
  exit 1
endif

if ($flag2 > 0) then
  exit 1
endif

if ($flag3 > 0) then
  exit 1
endif

Спасибо

Ответы [ 2 ]

0 голосов
/ 22 июля 2011

Для чего вам нужны 3 флаговые переменные?

set error=0

if ($notLoaded1 > 0) then
  echo "Rows not loaded due to data errors in first load: $notLoaded1"
  set error=1
endif

if ($notLoaded2 > 0) then
  echo "Rows not loaded due to data errors in second load: $notLoaded2"
  set error=1
endif

if ($notLoaded3 > 0) then
  echo "Rows not loaded due to data errors in third load: $notLoaded3"
  set error=1
endif

if ($error) then
  exit 1
endif
0 голосов
/ 21 июля 2011

flag1 устанавливается только в том случае, если $notLoaded1 больше 0. Поэтому, если оно равно нулю, вы не получите $ flag1.

Я бы предложил заранее инициализировать эти три переменные по умолчанию:

set flag1=0
if (...) the
    set flag1=1
    echo 'Rows not loaded...'
endif

Это гарантирует, что flag1 всегда существует.

...