스크립트 내에서 2>&1 리디렉션 실행

스크립트 내에서 2>&1 리디렉션 실행

다른 스크립트 내에서 스크립트를 실행하고 로그 파일에 리디렉션을 포함할 수 있습니까?

더 큰 스크립트에서 3개의 스크립트를 실행하려고 합니다. 그 중 하나를 "지금" 실행해야 합니다. 다음은 수동으로 수행해야 하는 작업의 예입니다.

sample_script1.sh
at now
sample_script2.sh > sample_script2.log
2>&1
(CTRL + D)
tail -f sample_script2.log
sample_script3.sh

나는 이것을 시도했습니다 (그리고 다른 구문, 특히 인용된 구문을 사용하여 몇 가지 다른 반복):

sample_script_location="$HOME/sample_script.sh"
sample_script_log_location="$HOME/sample_script.log"
echo ""$sample_script_location" > "$sample_script_log_location" 2>&1" | at now

설계된 대로 실행하면 수동 프로세스는 로그 파일 하단에 "SQL> SP2-0042: 알 수 없는 명령 "2>&1""을 기록합니다. 에코를 "지금"으로 파이프하는 스크립트를 사용하여 이 작업을 수행하면 이 메시지가 나타나지 않습니다.

답변1

{ echo a; echo b 1>&2; echo c 1>&2; } 2>&1
a
b
c

일부 명령을 {} 중괄호로 묶을 수 있습니다. 바라보다 help {.

at now소위 먹이를 줄 수 있습니다here-document

sample_script1.sh
at now 2>&1 <<EOF
sample_script2.sh > sample_script2.log
EOF
tail -f sample_script2.log &
sample_script3.sh

script2의 stderr을 로그에 기록하려면 다음을 수행해야 합니다 2>&1.>sample_script2.log

sample_script1.sh
at now <<EOF
sample_script2.sh 2>&1 >sample_script2.log
EOF
tail -f sample_script2.log &
sample_script3.sh

tail -f명령은 취소할 때까지 실행되므로 백그라운드에 두거나 마지막 명령으로 실행해야 합니다. 바라보다 help bg.

관련 정보