Score:0

สคริปต์ทุบตีเพื่อวนซ้ำโฟลเดอร์และไฟล์

ธง ps

ฉันมีโฟลเดอร์ที่ตั้งชื่อว่า ouput00035023031 ถึง output000035023035ฉันได้เขียนสคริปต์ทุบตีเพื่อวนซ้ำในแต่ละโฟลเดอร์และเข้าสู่โฟลเดอร์ หลังจากเข้าสู่โฟลเดอร์ ฉันต้องการรันโปรแกรม 'barycorr' ซึ่งขอสามอินพุต อินพุตคือชื่อไฟล์ *cl.evt. รหัสถูกเป่า:

สำหรับฉันใน $(seq -f "%03g" 1 5); ทำ
    เอาต์พุตซีดี0003502303$i
    เสียงสะท้อน -e "sw00092413002xpcw3po_cl.evt 
    sw00092413002xpcw3po_cl_bary4.evt 
    sw00092413002sao.fits.gz" | barycorr ra=253.467570 ธ.ค.=39.760169
    ซีดี ..
เสร็จแล้ว

ฉันต้องป้อนชื่อไฟล์ก่อน sw*pcw3po_cl.evtประการที่สองชื่อไฟล์ที่ฉันต้องการบันทึกเช่น sw*xpcw3po_cl_bary4.evt และสามเส้นทางที่ sw*sao.fits.gz ไฟล์ตั้งอยู่. เดอะ * เปลี่ยนไปตามโฟลเดอร์ที่ผมอยู่ วิธีเขียนสคริปต์ตอนนี้ให้รันโปรแกรมนี้ในแต่ละโฟลเดอร์

au flag
แต่ละรูปแบบในแต่ละโฟลเดอร์จะตรงกันเสมอหรือไม่ นั่นคือ เป็นไปได้ไหมที่โฟลเดอร์อาจมี `sw1pcw3po_cl.evt` และ `sw2pcw3po_cl.evt` ด้วย
unicorn avatar
ps flag
ใช่ `sw00035023032xpcw3po_cl.evt` เปลี่ยนแปลงตามหมายเลขโฟลเดอร์เอาต์พุต เช่น output00035023032 และนอกจากนี้ อาจมีชื่อไฟล์ `sw0035023032xwtw2po_cl.evt` เช่น pcw3 อาจเปลี่ยนเป็น 'wtw2'
au flag
ส่วนแรกเหมือนกับชื่อโฟลเดอร์เสมอหรือไม่ นั่นคือไฟล์ `xpcw3po_cl.evt`, `xpcw3po_cl_bary4.evt` และ `sao.fits.gz`? นอกจากนี้ จำเป็นจริงๆ หรือไม่ที่จะต้อง `cd` ลงในโฟลเดอร์ หรือจะต้องใช้การส่งผ่านพาธ (เช่น `/xpcw3po_cl.evt`) ไปยังคำสั่ง `barycorr` หรือไม่ (เหตุผลสำหรับคำถามที่สองคือ `cd` ในสคริปต์มักจะสร้างความสับสน และอาจทำให้เกิดปฏิกิริยาลูกโซ่ล้มเหลว ดังนั้นฉันจึงเลือกที่จะหลีกเลี่ยง)
unicorn avatar
ps flag
ใช่ เราสามารถเบิกทางได้ เราสามารถสร้างรายการคำสั่งนี้ได้โดยเปลี่ยนค่าตัวเลขเท่านั้น เช่น `00035023030' เป็น '00035023035' : ` echo -e "/home/dinesh/Test/output00035023030/sw00035023030xwtw2po_cl.evt /home/dinesh/Test/output00035023030/sw00035023030xwtw2po_cl_bary.evt /home/dinesh/Test/00035023030/auxil/sw00035023030sao.fits.gz" | barycorr ra=253.467570 dec=39.760169 ` แต่ถ้าพลาดไปสักเลขหนึ่งก็อย่างที่บอก ..31 โปรแกรมมันจะ error ต้องข้าม error นั้นไป ด้วย.
Score:0
ธง au

ถ้าฉันเข้าใจถูกต้องคุณควรจะทำสิ่งนี้ได้:

สำหรับฉันใน $(seq -f "%03g" 1 5); ทำ
    printf '%s\n' "output0003502303${i}/sw00092413${i}"{xpcw3po_cl.evt,xpcw3po_cl_bary4.evt,sao.fits.gz} |
        barycorr ra=253.467570 ธ.ค.=39.760169
เสร็จแล้ว

คำอธิบาย: the พิมพ์f '%s\n' จะพิมพ์แต่ละอาร์กิวเมนต์ต่อไปนี้ (the %s part) ตามด้วยการขึ้นบรรทัดใหม่ (the \n) -- นั่นคือ แต่ละบรรทัดแยกกัน พิมพ์ฉ เป็นสิ่งที่ควบคุมได้มากขึ้นสำหรับสิ่งนี้มากกว่า เสียงสะท้อน.

สำหรับอาร์กิวเมนต์เหล่านั้น แต่ละอาร์กิวเมนต์ประกอบด้วยชื่อโฟลเดอร์และคำนำหน้าชื่อไฟล์ และจากนั้น {xpcw3po_cl.evt,xpcw3po_cl_bary4.evt,sao.fits.gz} ส่วนจะขยายไปยังส่วนต่อท้ายแต่ละรายการ โดยพื้นฐานแล้วมันเป็นชวเลขสำหรับ:

"output0003502303${i}/sw00092413${i}"xpcw3po_cl.evt
"output0003502303${i}/sw00092413${i}"xpcw3po_cl_bary4.evt
"output0003502303${i}/sw00092413${i}"sao.fits.gz

นี่คือสิ่งที่จำเป็นหรือไม่? ถ้าไม่โปรดชี้แจง

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา