Score:-2

ไปป์ของฉันไม่ทำงานในคำสั่ง if ของฉัน

ธง cn

ฉันมีสคริปต์นี้เพื่อตรวจสอบ สถานะคอมไพล์ สำหรับที่เก็บทั้งหมดของฉัน:


ค้นหา / -type d -name .git 2>&- | 
ในขณะที่อ่าน gitFolder; ทำ
    ถ้า [[ $gitFolder == *"/Temp/"* ]]; แล้ว
        ดำเนินต่อ;
    ไฟ
    ถ้า [[ $gitFolder == *"/Trash/"* ]]; แล้ว
        ดำเนินต่อ;
    ไฟ
    ถ้า [[ $gitFolder == *"/opt/"* ]]; แล้ว
        ดำเนินต่อ;
    ไฟ
    parent=$(นามสกุล $gitFolder);
    ถ้า [[ `git -C $parent status --porcelain` ]]; แล้ว
        เสียงสะท้อน "";
        ก้อง $parent;
        git -C $parent สถานะ --porcelain
    อื่นถ้า [[ $(git -C $parent สถานะ | grep ข้างหน้า) ]]; แล้ว
        เสียงสะท้อน "";
        echo "ยังไม่ได้กด $parent";
    ไฟ
เสร็จแล้ว 

แต่มันไม่ทำงาน ถ้าฉันลบครั้งที่สอง บล็อกอื่น แล้วมันใช้งานได้

โดยทั่วไปฉันต้องการทราบว่าที่เก็บ git มีการเปลี่ยนแปลงใด ๆ (ก่อนถ้า) หรือนำหน้ามาสเตอร์ (สองถ้า)

ฉันควรเปลี่ยนเงื่อนไข if วินาทีนั้นอย่างไร

hr flag
โปรดพยายามอธิบายมากกว่า "ไม่ทำงาน" - อะไรจะเกิดขึ้น และอะไรจะเกิดขึ้นแทน
Lorenz Keel avatar
gr flag
แทนที่ `else if` ด้วย `elif` ฉันไม่ได้ตรวจสอบรหัสเพื่อหาข้อผิดพลาดเพิ่มเติมที่อาจเกิดขึ้น
Score:2
ธง gr

ทุบตี ถ้า...อื่น ถ้า...อื่น คำสั่งใช้แบบฟอร์มต่อไปนี้:

ถ้าเงื่อนไข 1; แล้ว
  แถลงการณ์1
เอลิฟ เงื่อนไข1; แล้ว
  งบ2
อื่น
  แถลงการณ์3
ไฟ

ข้อผิดพลาดเฉพาะในสคริปต์ของคุณคือการใช้คำหลักที่ไม่ถูกต้อง อย่างอื่นถ้า แทนอันที่ถูกต้อง เอลฟ์.

ถ้า CONDITIONS1 ประเมินเป็น True STATEMENTS1 จะถูกดำเนินการ ถ้า CONDITION2 ประเมินเป็น True STATEMENTS2 จะถูกดำเนินการ หากไม่มีคำสั่งทดสอบใดประเมินค่าเป็น True ระบบจะดำเนินการ CONDITION3

เงื่อนไขจะได้รับการประเมินตามลำดับ เมื่อเงื่อนไขส่งกลับ True เงื่อนไขที่เหลือจะไม่ถูกดำเนินการ และการควบคุมโปรแกรมจะย้ายไปยังจุดสิ้นสุดของคำสั่ง if

คุณสามารถมีอนุประโยค elif อย่างน้อยหนึ่งข้อในคำสั่ง

คำแนะนำ: คุณสามารถติดตั้ง เชลล์เช็ค แพ็คเกจเพื่อตรวจสอบรหัสทุบตีของคุณ ดู https://github.com/koalaman/shellcheck สำหรับการอ้างอิง

Score:-1
ธง in

ลองแทนที่

    อื่นถ้า [[ $(git -C $parent สถานะ | grep ข้างหน้า) ]]; แล้ว

กับ

    อย่างอื่นถ้า git -C $parent status | ไปข้างหน้า; แล้ว

คุณอาจต้องการเพิ่ม -คิว เพื่อเกรป

สิ่งนี้ทำงานได้โดยการแทนที่ [[ ทดสอบด้วยคำสั่งเปล่า คำสั่งสุดท้ายในไปป์ไลน์ (เกรป) ออกด้วยค่าจริงหรือเท็จ ขึ้นอยู่กับว่าพบอะไรหรือไม่ เดอะ -คิว ตัวเลือกบอกให้ส่งคืนเฉพาะค่านั้นและไม่ได้พิมพ์สิ่งที่พบ

หมายเหตุ: มีข้อผิดพลาดอื่นๆ ในสคริปต์ของคุณที่ต้องแก้ไขด้วย

Saeed Neamati avatar
cn flag
ฉันไม่เข้าใจมัน **กำลังตรวจสอบ** ในบรรทัดที่สองอยู่ที่ไหน ดูเหมือนว่าจาวาสคริปต์
Saeed Neamati avatar
cn flag
ไม่ทำงาน. ทำให้ฉันมีข้อผิดพลาดทางไวยากรณ์ ใกล้ `เสร็จ`.
terdon avatar
cn flag
@SaeedNeamati โปรดอย่าบอกเราว่า "ใช้งานไม่ได้" หรือ "ข้อผิดพลาดทางไวยากรณ์" แก้ไขคำถามของคุณและแสดงข้อผิดพลาด _exact_ ที่คุณได้รับ เราไม่สามารถคาดเดาได้ว่าคุณต้องการอะไร
Saeed Neamati avatar
cn flag
@terdon ฉันเขียนข้อผิดพลาด `ข้อผิดพลาดทางไวยากรณ์ ใกล้เสร็จแล้ว` ฉันจัดการเพื่อให้มันใช้งานได้โดยเปลี่ยนวิธีการ
user10489 avatar
in flag
คุณจะต้องรวมคำตอบหลายข้อเข้าด้วยกันเพื่อให้ได้วิธีแก้ปัญหาที่ใช้งานได้ เนื่องจากคุณมีข้อผิดพลาดหลายข้อ ข้อผิดพลาดใกล้เสร็จแล้วคือขาด `fi` อย่างน้อยหนึ่งรายการเพื่อปิด `if`s หรือแทนที่ `else if` ด้วย `elif`
lu flag
`elif` คือหนทางที่จะไป
user10489 avatar
in flag
ฉันคิดว่า elif เป็นฟีเจอร์ทุบตี แต่ดูเหมือนว่า POSIX จะเพิ่มเข้ามาเมื่อฉันไม่ได้ดูหรืออะไรซักอย่าง เมื่อเลิกทำแบบนั้นไปแล้ว ก็คงไม่มีปัญหากับความเข้ากันได้แบบย้อนกลับ และ `elif` ก็ดูเหมือนจะเป็นหนทางที่ดี

โพสต์คำตอบ

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