สำหรับลูปน่าจะเป็นวิธีที่ถูกต้องที่จะทำ แต่นี่เป็นทางเลือกที่สนุก:
echo -e {1..10}"\n" |xargs -n1 some_command
หากคุณต้องการหมายเลขซ้ำเป็นพารามิเตอร์สำหรับการเรียกใช้ของคุณให้ใช้:
echo -e {1..10}"\n" |xargs -I@ echo now I am running iteration @
แก้ไข:มีการให้ความเห็นอย่างถูกต้องว่าโซลูชันที่ระบุด้านบนจะทำงานได้อย่างราบรื่นเฉพาะเมื่อมีการเรียกใช้คำสั่งง่าย ๆ (ไม่มีไพพ์ ฯลฯ ) คุณสามารถใช้ a sh -c
เพื่อทำสิ่งที่ซับซ้อนมากขึ้นได้ตลอดเวลา แต่ไม่คุ้มค่า
วิธีอื่นที่ฉันใช้โดยทั่วไปคือฟังก์ชันต่อไปนี้:
rep() { s=$1;shift;e=$1;shift; for x in `seq $s $e`; do c=${@//@/$x};sh -c "$c"; done;}
ตอนนี้คุณสามารถเรียกมันว่า:
rep 3 10 echo iteration @
ตัวเลขสองตัวแรกให้ช่วง @
จะได้รับการแปลเป็นจำนวนซ้ำ ตอนนี้คุณสามารถใช้สิ่งนี้กับท่อได้ด้วย:
rep 1 10 "ls R@/|wc -l"
พร้อมระบุจำนวนไฟล์ในไดเรกทอรี R1 .. R10
let ++n
แทนn=$((n+1))
(3 ตัวอักษรน้อยกว่า)