Bash スクリプトでは、これに代わる単一のステートメントはありますか?
if [ -f /path/to/some/file ]; then
source /path/to/some/file
fi
最も重要なことは、ファイル名が変数にならずに一度だけ存在することです (さらに行が追加されます)。
たとえば、PHPでは次のようにすることができます
@include("/path/to/some/file"); // @ makes it ignore errors
Bash スクリプトでは、これに代わる単一のステートメントはありますか?
if [ -f /path/to/some/file ]; then
source /path/to/some/file
fi
最も重要なことは、ファイル名が変数にならずに一度だけ存在することです (さらに行が追加されます)。
たとえば、PHPでは次のようにすることができます
@include("/path/to/some/file"); // @ makes it ignore errors
@include
オプションの独自のバージョンを定義していますか?
include () {
[[ -f "$1" ]] && source "$1"
}
include FILE
ファイル名を繰り返さずにワンライナーが気になる場合は、おそらく次のようになります。
FILE=/path/to/some/file && test -f $FILE && source $FILE
警告が気になる場合 (そして、ソース ファイルが存在しないことがスクリプトにとって重要ではない場合) は、警告を取り除きます。
source FILE 2> /dev/null
あなたは試すことができます
test -f $FILE && source $FILE
false を返す場合test
、 の 2 番目の部分&&
は評価されません
これは私が得ることができる最短のものです(ファイル名と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
スクリプトの出力に関心がない場合は、標準エラーを/dev/null
次のようにリダイレクトできます。
$ source FILE 2> /dev/null