![tee를 사용하여 사용자 입력을 파일에 씁니다.](https://linux55.com/image/129420/tee%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%82%AC%EC%9A%A9%EC%9E%90%20%EC%9E%85%EB%A0%A5%EC%9D%84%20%ED%8C%8C%EC%9D%BC%EC%97%90%20%EC%94%81%EB%8B%88%EB%8B%A4..png)
소프트웨어 설치 과정을 사용자에게 안내하는 스크립트가 있는데, 문제가 발생하여 사용자에게 지원이 필요할 경우를 대비해 로그 파일을 작성하고 싶습니다.
스크립트는 다음과 같습니다.
while true; do
echo "This script will help you with the installation. Do you wish to proceed?"
echo "(1) Yes"
echo "(2) No"
read proceed
case $proceed in
1 ) break;;
* ) echo "Aborting."; exit 8;;
esac
done
unset proceed
./install.ksh | tee /var/log/myinstall.log
그런 다음 다음을 사용하여 실행했습니다. 명령 echo $proceed
뒤에 추가 하면 read
로그에 기록되지만 다음과 같이 두 번 표시됩니다.
This script will help you with the installation. Do you wish to proceed?
(1) Yes
(2) No
1 #this is the input which is not written to the log
1 # this is the echo which is written to the log
이제 내 질문은 명령의 출력을 어떻게 억제할 수 있는지 read
, 아니면 어떻게 echo
STDOUT이 아닌 파일에 쓸 수 있는지입니다.
답변1
당신은 사용해야합니다script
반대로, 이는 정확히 다음 목적을 위해 설계되었습니다.
script /var/log/myinstall.log -c ./install.ksh
read
입력 과 출력을 모두 기록합니다 .