รวมหลายไอเอฟทุบตี


0

ฉันจะลดความซับซ้อนของรหัสต่อไปนี้ถ้าคำสั่งได้อย่างไร ขอขอบคุณ

function git_dirty {
    text=$(git status)
    changed_text="Changes to be committed"
    changes_not_staged="Changes not staged for commit"
    untracked_files="Untracked files"

    dirty=false

    if [[ ${text} = *"$changed_text"* ]];then
        dirty=true
    fi

    if [[ ${text} = *"$changes_not_staged"* ]];then
        dirty=true
    fi

    if [[ ${text} = *"$untracked_files"* ]];then
        dirty=true
    fi

    echo $dirty
}

คำตอบ:


2

ดีนี่คือเวอร์ชันที่มีเงื่อนไขของ if เนื่องจากแต่ละคำสั่งมี payload เหมือนกัน

if [[ ${text} = *"$changed_text"* -o  ${text} = *"$changes_not_staged"* -o ${text} = *"$untracked_files"*]];then
            dirty=true
        fi

-oระหว่างเงื่อนไขใน if ระบุความสัมพันธ์ OR ระหว่างเงื่อนไขและ-aระบุ AND


0

บน mac มันบ่นดังนั้นฉันจึงไปที่ shellcheck.net และมันก็บ่น-oแต่ไม่ได้พูดว่าทำไมแค่พูดใช้||ก็เลย:

if [[ ${text} = *"$changed_text"* ||  ${text} = *"$changes_not_staged"* || ${text} = *"$untracked_files"* ]]; then
        dirty=true
    fi

ฉันได้รับ

$ src
-bash: /Users/cchilders/.bash_profile: line 384: syntax error in conditional expression
-bash: /Users/cchilders/.bash_profile: line 384: syntax error near `-o'
-bash: /Users/cchilders/.bash_profile: line 384: `    if [[ ${text} = *"$changed_text"* -o  ${text} = *"$changes_not_staged"* -o ${text} = *"$untracked_files"* ]]; then'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.