33

Bash スクリプトでは、これに代わる単一のステートメントはありますか?

if [ -f /path/to/some/file ]; then
    source /path/to/some/file
fi

最も重要なことは、ファイル名が変数にならずに一度だけ存在することです (さらに行が追加されます)。

たとえば、PHPでは次のようにすることができます

@include("/path/to/some/file"); // @ makes it ignore errors
4

7 に答える 7

42

@includeオプションの独自のバージョンを定義していますか?

include () {
    [[ -f "$1" ]] && source "$1"
}

include FILE
于 2012-05-24T12:54:21.630 に答える
16

ファイル名を繰り返さずにワンライナーが気になる場合は、おそらく次のようになります。

FILE=/path/to/some/file && test -f $FILE && source $FILE
于 2012-05-24T11:51:36.950 に答える
12

警告が気になる場合 (そして、ソース ファイルが存在しないことがスクリプトにとって重要ではない場合) は、警告を取り除きます。

source FILE 2> /dev/null
于 2012-05-24T10:39:33.380 に答える
4

あなたは試すことができます

test -f $FILE && source $FILE

false を返す場合test、 の 2 番目の部分&&は評価されません

于 2012-05-24T10:25:50.447 に答える
4

これは私が得ることができる最短のものです(ファイル名と20文字):

F=/path/to/some/file;[ -f $F ] && . $F

それは以下と同等です:

F=/path/to/some/file 
test -f $F && source $F

読みやすさを向上させるために、私は次の形式を好みます。

FILE=/path/to/some/file ; [ -f $FILE ] && . $FILE
于 2013-12-02T11:58:07.910 に答える
1

スクリプトの出力に関心がない場合は、標準エラーを/dev/null次のようにリダイレクトできます。

$ source FILE 2> /dev/null

于 2012-05-24T10:39:37.653 に答える