내 전체 작업은 "현재 작업 중인 사용자 수를 표시하고 누군가 로그아웃하거나 로그인할 때마다 새 사용자 수를 인쇄합니다. 새 화면을 만들고 텍스트 결과를 인쇄합니다."와 같습니다. 첫 번째 부분에서는 꽤 잘 처리했습니다. 코드는 다음과 같습니다.
#!/bin/bash
updateusers(){
log=$( who | grep "st" | awk '{print $1}' | wc -l);
}
updateusers
temp=$log
echo "Now logged users: $lrn"
while true
do
updateusers
if [ $temp -lt $log ]; then
temp=$log
echo "User has logged in : $log"
fi
if [ $temp -gt $log ]; then
temp=$log
echo "User has logged out: $log"
fi
sleep 1
done
두 번째 작업은 스크립트 내에 두 번째 화면을 만들고 이 스크립트의 텍스트를 여기에 인쇄하는 것입니다. 나는 screen -S name -p 0 -X stuff "text here/echo command with text"
및 를 사용했습니다 echo text > screen -S name -p 0
. 이 중 어느 것도 나에게 효과가 없습니다.
답변1
echo
스크립트의 출력(다양한 명령)을 임시 파일로 리디렉션한 다음 해당 cat
임시 파일 이름을 인수로 사용하여 화면 내에서 명령을 실행해야 합니다. 그것은 마치
myreport >foo
screen -S name -X stuff "cat foo"
rm foo
(예를 들어 임시 파일을 만드는 더 우아한 방법이 있지만 mktemp
). 첫 번째 단계로, 보고서 스크립트를 함수(또는 별도의 파일)로 만들면 해당 출력을 리디렉션할 수 있습니다.