ファイルが存在したらそれをsourceする処理をスマートに書くには？

[code]

    if [[ ! -o posix && -z "${BASH_COMPLETION_COMPAT_DIR:-}" ]]; then
        if [[ -f /usr/share/bash-completion/bash_completion ]]; then
            . /usr/share/bash-completion/bash_completion
        elif [[ -f /etc/bash_completion ]]; then
            . /etc/bash_completion
        fi
    fi
    
[/code]

現状では上記のように書いているのですが、同じファイル名を2回書くのは冗長に思えます。  
より良い書き方はありますでしょうか？

bashの組み込みコマンドでなければ`find PATH/TO/DIR -name FILENAME -execdir cat {}
\+`のように書けるのですが……。




自分だったら、重複とか気になりだしたら、普通に変数導入したり関数挟んだりして対応すると思います。仮に、自分が重複省くとしたら、以下のようになると思います。

[code]

    #!/usr/bin/env bash
    
    try_source_first_existed() {
        for file in "$@"
        do
            if [ -f "$file" ]
            then
                . "$file"
                return $?
            fi
        done
    }
    
    if [[ ! -o posix && -z "${BASH_COMPLETION_COMPAT_DIR:-}" ]]; then
        try_source_first_existed \
            /usr/share/bash-completion/bash_completion \
            /etc/bash_completion
    fi
    
[/code]




自分だったら、重複とか気になりだしたら、普通に変数導入したり関数挟んだりして対応すると思います。仮に、自分が重複省くとしたら、以下のようになると思います。

[code]

    #!/usr/bin/env bash
    
    try_source_first_existed() {
        for file in "$@"
        do
            if [ -f "$file" ]
            then
                . "$file"
                return $?
            fi
        done
    }
    
    if [[ ! -o posix && -z "${BASH_COMPLETION_COMPAT_DIR:-}" ]]; then
        try_source_first_existed \
            /usr/share/bash-completion/bash_completion \
            /etc/bash_completion
    fi
    
[/code]

