`ดำเนินการต่อ 'ในสคริปต์ BASH


1

ฉันพยายามค้นหาโฟลเดอร์ในคอลเล็กชันเพลงของฉันที่ไม่มีไฟล์ MP3 (บางไฟล์มีเฉพาะปกอัลบั้ม ดังนั้นฉันมีสิ่งนี้ในเชลล์สคริปต์

#!/bin/bash
for DIR in *
do
        [[ -d "${DIR}" ]] || continue
        cd "${DIR}"

        ls *.mp3 > /dev/null 2>&1
        if [[ "$?" != "0" ]]
        then
                echo $DIR has no MP3 files!
                continue
        fi

        cd ..
done

ทว่าถึงแม้จะมีหลายโฟลเดอร์ แต่สคริปต์นี้จะตรวจสอบเพียงโฟลเดอร์แรกก่อนที่จะออก ... มันเหมือนกับว่า continue ข้างใน if แตกออกจากวงอย่างสิ้นเชิง

คำตอบ:


3

ต่อ คำสั่งภายใน ถ้า block เป็นสาเหตุของปัญหาของคุณ:

หากไม่พบไฟล์ MP3 cd .. ไม่ได้รับการดำเนินการและเงื่อนไข [[ -d "${DIR}" ]] ส่วนใหญ่จะล้มเหลวสำหรับไดเรกทอรีที่เหลือทั้งหมด


ได้! คุณพูดถูก! ไม่อยากจะเชื่อเลยว่าฉันไม่ได้รู้เรื่องนี้มาก่อน ขอบคุณ :)
Alex Reinking
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.