쉘 스크립트 로그에서 스크립트를 디버깅하는 방법은 무엇입니까? [복사]

쉘 스크립트 로그에서 스크립트를 디버깅하는 방법은 무엇입니까? [복사]

디버그 모드로 설정된 스크립트가 있습니다.

set -x
#!/bin/sh

ALLCIRCLS="/var/tmp/release/ALLCIRCLS.txt"
NONRBTIPS="/var/tmp/release/NONRBTIP.txt"
RBTIPS="/var/tmp/release/RBTIPS.txt"
NONRBTIPGNOCIP="/var/tmp/release/NONRBTIPGNOCIP.txt"
NONRBTROOTIP="/var/tmp/release/NONRBTROOTIP.txt"
LOGFILE="/var/tmp/release/log_result.log"
release="/var/tmp/deployment/*"

for IP_ADDRESS in $(cat $NONRBTIPS); do
   echo "TEST FOR ${IP_ADDRESS}" >> $LOGFILE
   scp -r /var/tmp/deployment/* test@${IP_ADDRESS}:/var/mnt/promptbase/prompts/local_cms >> $LOGFILE
   if [ $? -ne 0 ] ; then
      echo "Secure copy is failed " >> $LOGFILE
      exit 1
   else
      echo "Secure copy is successfull"
   fi
done

디버그 모드이므로 내가 얻는 출력은 다음과 같습니다.

+ ALLCIRCLS=/var/tmp/release/ALLCIRCLS.txt
+ NONRBTIPS=/var/tmp/release/NONRBTIP.txt
+ RBTIPS=/var/tmp/release/RBTIPS.txt
+ NONRBTIPGNOCIP=/var/tmp/release/NONRBTIPGNOCIP.txt
+ NONRBTROOTIP=/var/tmp/release/NONRBTROOTIP.txt
+ LOGFILE=/var/tmp/release/log_result.log
+ release='/var/tmp/deployment/*'
++ cat /var/tmp/release/NONRBTIP.txt
+ for IP_ADDRESS in '$(cat $NONRBTIPS)'
+ echo 'TEST FOR 172.19.117.198'
+ scp -r /var/tmp/deployment/ID_MB4_W2JUL19 [email protected]:/var/mnt/promptbase/prompts/local_cms

$LOGFILE터미널을 깨끗하게 유지하고 ?를 사용하여 스크립트의 모든 디버깅 정보를 로그 파일에 인쇄하고 싶습니다 .

답변1

출력을 log.txt와 같은 파일로 리디렉션할 수 있습니다.

스크립트 이름이 test.sh라고 가정합니다.

./test.sh > log.txt

관련 정보