배치에 대한 이해

배치에 대한 이해

어느 줄이 맞나요? 나는 일을 단계별로 수행합니다.

if [ $? -ne 0 ]; then

정확한 설명을 찾지 못했지만 -ne이 줄은 마지막으로 수행한 작업이 성공했는지 확인한다는 것을 이해합니다.

ksh $PROC/reg.sh 2>&1 | tee $REG

ksh즉, PROC에 있는 reg.sh와 함께 korn 쉘을 사용하고 2>&1은 stderr을 지정되지 않은 파일로 리디렉션하고 sterr은 stdout으로 리디렉션합니다. (무엇을 하는지, 목적이 무엇인지 잘 모르겠습니다 | tee $REG.)

cat $REG >> $DD_LIBEDIT/log.$DATE

cat연결을 위해 사용했지만 이 줄에는 파일이 하나만 있습니다. 이는 REG가 로그에 연결된다는 의미입니까?

This.$DATE (DATE=`date +%Y%m%d)

로그에 날짜가 추가되나요?

이것은 배치의 작은 부분일 뿐이고 많은 연구를 거쳐도 의미를 이해할 수 없는 부분을 선택하려고 노력했습니다.

답변1

쉘의 매뉴얼 페이지가 도움이 되는 경우가 많습니다. 첫 번째 예를 들어보겠습니다.

if [ $? -ne 0 ]; then

내 시스템에서는 man ksh다음과 같이 말합니다.

   if list ;then list [ ;elif list ;then list ] ... [ ;else list ] ;fi
          The list following if is executed and, if it returns a zero exit  sta‐
          tus,  the  list  following the first then is executed.  Otherwise, the
          list following elif is executed and, if its value is  zero,  the  list
          following  the  next  then  is executed.  Failing each successive elif
          list, the else list is executed.  If the if  list  has  non-zero  exit
          status  and  there is no else list, then the if command returns a zero
          exit status.

특히 이는 "목록", 즉 실행될 명령이 if그 사이에 있다는 것을 의미합니다.then

목록의 실제 명령은 입니다 [. 이것은 명령이자 쉘 내장입니다.

$ type -a [  
[ is a shell builtin
[ is /usr/bin/[

man [명령 및 man ksh내장 명령 에 사용됩니다 . (Bash의 경우 help [내장된 세부 정보도 제공합니다.)

대부분의 경우 명령에 대해 이야기하고 있는지 아니면 내장 명령에 대해 이야기하고 있는지는 중요하지 않습니다. man [이제 다음과 같이 말하세요.

   INTEGER1 -ne INTEGER2
          INTEGER1 is not equal to INTEGER2

귀하의 경우 $?해당 변수의 값을 0과 비교합니다. 또 다른 모습을 살펴보세요 man ksh:

   The following parameters are automatically set by the shell:
          ?      The decimal value returned by the last executed command.

반환 값이 0이면 일반적으로 모든 것이 정상임을 의미합니다. (그러나 특정 명령에 대해서는 매뉴얼 페이지를 확인하여 확인하십시오.)

따라서 if [ $? -ne 0 ]; then이전 명령은 단순히 오류가 있는지 확인됩니다.


cat명령은 모든 파일을 읽고 표준 출력으로 출력합니다. 그런 다음 셸을 사용하여 파일로 리디렉션할 수 있습니다. 또 다른 모습을 살펴보세요 man ksh:

   >>word        Use  file  word  as  standard output.  If the file exists, then
                 output is appended to it (by first seeking to the end-of-file);
                 otherwise, the file is created.

관련 정보