스크립트에서 화면으로 텍스트 보내기

스크립트에서 화면으로 텍스트 보내기

내 전체 작업은 "현재 작업 중인 사용자 수를 표시하고 누군가 로그아웃하거나 로그인할 때마다 새 사용자 수를 인쇄합니다. 새 화면을 만들고 텍스트 결과를 인쇄합니다."와 같습니다. 첫 번째 부분에서는 꽤 잘 처리했습니다. 코드는 다음과 같습니다.

#!/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). 첫 번째 단계로, 보고서 스크립트를 함수(또는 별도의 파일)로 만들면 해당 출력을 리디렉션할 수 있습니다.

관련 정보