簡體   English   中英

圍繞nc命令編寫的bash腳本。 如何在每行之前添加文字?

[英]A bash script written around the nc command. How do I prepend text before each line?

我以一種不尋常的方式使用nc命令。 我有兩個bash腳本,如果兩個用戶大約同時運行它們,它們將啟動聊天會話。 這些腳本圍繞nc命令構建。 我希望文本流顯示每次回車后(當用戶按Enter時)附加的值。

這些腳本是如何交互和協作地工作:在工作站1上,我調用此命令:nc -l 44444

在工作站2上,其他人調用此命令:nc xxxx 44444(其中xxxx是工作站1的IP地址)

我可以和別人聊天。 無論哪種用戶類型,都將鏡像到另一終端。 我的問題:如何編寫bash腳本以附加文本? 我在變量中有想要的文本(例如“ said user1”)。

我希望它可以自動顯示(無需用戶手動輸入)。

如果在聊天會話期間工作站1(IP地址為xxxx)上的用戶鍵入“這僅是測試”,然后按Enter,我希望結果如下:

user1這只是一個測試。

如果在聊天會話期間工作站2(IP地址為yyyy)上的用戶鍵入“哦,確定”並按Enter,我希望得到的結果是:

哦,好的,user2說。

用戶名在腳本的變量中。 我可以毫無問題地構造字符串。 我只是不知道如何使此可變字符串自動顯示。 僅在腳本運行時,每次按下Enter就能顯示一些文本嗎? 當bash腳本運行時,文本流將被鏡像。 我不確定如何做到這一點。

嘗試這個:

sed -u "s/$/said user2 /" | nc xxx.xxx.xxx.xxx 44444
sed -u "s/$/ said user1 /" | nc -l 44444

nc以交互方式運行(即,作為前台作業運行)時,其標准輸入已連接到終端,而Bash也不能只是向其發送輸入。 恕我直言,最簡單的方法是(針對每一行)讀取Bash中的輸入並在其中添加后綴,然后將它們都通過管道傳遞給nc的新調用。

請記住,當從標准輸入中讀取時, nc將忽略文件結尾(EOF),請參閱nc(1) -q選項告訴nc在客戶端EOF之后關閉連接,您可以在服務器端循環運行nc -l

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM