スクリプトから画面にテキストを送信する

スクリプトから画面にテキストを送信する

私のタスク全体は、「現在作業しているユーザー数を表示し、誰かがログアウトまたはログインするたびに新しいユーザー数を印刷します。新しい画面を作成してテキスト結果を印刷します」と同じです。最初の部分ではかなりうまく処理しました。コードは次のとおりです。

#!/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

2番目のタスクは、スクリプト内に2番目の画面を作成し、このスクリプトのテキストをここに印刷することです。私はと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)。最初のステップとして、レポートスクリプトを関数(または別々のファイル)にすると、その出力をリダイレクトできます。

おすすめ記事