tee를 사용하여 사용자 입력을 파일에 씁니다.

tee를 사용하여 사용자 입력을 파일에 씁니다.

소프트웨어 설치 과정을 사용자에게 안내하는 스크립트가 있는데, 문제가 발생하여 사용자에게 지원이 필요할 경우를 대비해 로그 파일을 작성하고 싶습니다.

스크립트는 다음과 같습니다.

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, 아니면 어떻게 echoSTDOUT이 아닌 파일에 쓸 수 있는지입니다.

답변1

당신은 사용해야합니다script반대로, 이는 정확히 다음 목적을 위해 설계되었습니다.

script /var/log/myinstall.log -c ./install.ksh

read입력 과 출력을 모두 기록합니다 .

관련 정보