ฉันต้องใช้คำสั่งในเทอร์มินัลเพื่อรับข้อความขาเข้าอย่างต่อเนื่องจากที่อื่นในเครือข่าย ฉันไม่สามารถควบคุมการกำหนดความยาวของข้อความได้ อย่างไรก็ตาม คำสั่งสามารถรับและพิมพ์ข้อความเต็มได้ครั้งละหนึ่งข้อความ (และฉันก็ไม่สามารถควบคุมคำสั่งนี้ได้เช่นกัน)
งานของฉันคือส่งต่อสตรีมข้อความนี้ไปยังพอร์ตในเครื่อง แอพที่ฟังพอร์ตนั้นจะประมวลผลข้อความต่อไป นี่คือปัญหา: ฉันต้องตั้งค่าบัฟเฟอร์รับที่แอพ (พูด 1024 ไบต์) และตามโปรโตคอล TCP ดังนี้ (ตามที่กล่าวไว้อย่างมาก ที่นี่) ข้อความเพิ่งผ่านไม่ได้อยู่ในต้นฉบับ ก้อน
. และความยาวของข้อความอาจไม่คงที่ (ตามตัวอย่างด้านล่าง)
ฉันต้องการเพิ่มอักขระพิเศษหนึ่งตัวที่จุดเริ่มต้นและจุดสิ้นสุดของข้อความที่คำสั่งแยกออกมาเพื่อประมวลผลในอีกด้านหนึ่ง นี่คือตัวอย่างเฉพาะเจาะจงมากขึ้น:
บนเทอร์มินัล ฉันรันคำสั่งนี้
คำสั่งของฉัน | ที | netcat localhost 2003
คำสั่งนี้รับข้อความในกลุ่มดั้งเดิมและส่งต่อไปยังพอร์ต 2003:
action_1_timestamp_2021_6_09_10_34_23_abort
action_2_timestamp_2021_6_09_10_34_34_success
...
action_193848_timestamp_2021_6_23_10_34_23_hold
ฉันจะห่อแต่ละบรรทัดด้านบนเช่นนี้ได้อย่างไร:
<action_1_timestamp_2021_6_09_10_34_23_abort>
ก่อนที่มันจะถูกส่งต่อไปโดย netcat localhost 2003
. ฉันไม่ค่อยคุ้นเคยกับการเขียนสคริปต์ทุบตี