저는 raspbian을 실행 중이며 이 bash 스크립트를 사용하여 매분 사진을 찍어 FTP 서버에 업로드합니다.
#!/bin/bash
while [ 1 ]; do
DATE=$(date +"%Y-%m-%d_%H_%M_%S")
raspistill -q 10 -th none -o /home/pi/fb/$DATE.jpg
curl -T /home/pi/fb/$DATE.jpg ftp://myftpserver --user myuser:mypass >> /home/pi/fb/log.txt
sleep 60
echo finished $DATE >> /home/pi/fb/log.txt
done
내가 원하는 출력이 파일 curl
에 나타나지만 log.txt
항상 콘솔에 인쇄됩니다. 왜 그런 겁니까? 나는 또한 사용해 보았지만 tee
아무것도 바뀌지 않았습니다.
답변1
컬은 상태를 stdout 대신 stderr로 인쇄합니다. 동일한 파일에서 stderr을 캡처하려면 다음을 추가하여 stderr를 stdout으로 리디렉션해야 합니다.2>&1
뒤쪽에표준 출력 리디렉션:
curl -T /home/pi/fb/$DATE.jpg ftp://myftpserver --user myuser:mypass >> /home/pi/fb/log.txt 2>&1
2>&1
stdout과 stderr을 더 잘 이해하는 데 도움이 될 생각을 자극하는 질문에 대해... 왜 초기 >>
가 아닌 초기 이후에 있어야 합니까 ?
답변2
표준 출력(stdout)과 다른 스트림인 표준 오류(stderr)로의 출력이 표시될 수 있습니다.
대상을 출력한 후 리디렉션을 위해 2>&1을 사용할 수 있습니다.
예를 들어:
$curl -T /home/pi/fb/$DATE.jpg ftp://myftp서버--사용자 myuser:mypass >> /home/pi/fb/log.txt 2>&1