ฉันมีสคริปต์ทุบตีที่สร้างบรรทัดคำสั่งในสตริงตามพารามิเตอร์บางอย่างก่อนดำเนินการในครั้งเดียว ชิ้นส่วนที่ถูกต่อเข้ากับสตริงคำสั่งควรถูกคั่นด้วยไพพ์เพื่ออำนวยความสะดวกในการ "สตรีม" ของข้อมูลผ่านแต่ละส่วนประกอบ
ตัวอย่างที่ง่ายมาก:
#!/bin/bash
part1=gzip -c
part2=some_other_command
cmd="cat infile"
if [ ! "$part1" = "" ]
then
cmd+=" | $part1"
fi
if [ ! "$part2" = "" ]
then
cmd+=" | $part2"
fi
cmd+="> outfile"
#show command. It looks ok
echo $cmd
#run the command. fails with pipes
$cmd
ด้วยเหตุผลบางอย่างดูเหมือนว่าท่อจะไม่ทำงาน เมื่อฉันเรียกใช้สคริปต์นี้ฉันได้รับข้อความแสดงข้อผิดพลาดต่าง ๆ ที่เกี่ยวข้องมักจะเป็นส่วนแรกของคำสั่ง (ก่อนที่จะไพพ์แรก)
ดังนั้นคำถามของฉันคือการสร้างคำสั่งด้วยวิธีนี้หรือไม่และวิธีที่ดีที่สุดในการทำคืออะไร
infile
มีอยู่ในไดเรกทอรีปัจจุบันหรือไม่?