Включить/Источник script, если он существует в Bash

В сценарии Bash существует ли для этого одна альтернатива?

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

Самое главное, что имя файла существует только один раз, не делая его переменной (что добавляет еще больше строк).

Например, в PHP вы можете сделать это следующим образом:

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

Ответы

Ответ 1

Определяет ли ваша версия @include параметр?

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

include FILE

Ответ 2

Если вас беспокоит однострочный лайнер без повторения имени файла, возможно:

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

Ответ 3

Если вас беспокоит предупреждение (и отсутствие существующего файла не является критическим для вашего script), просто избавляйтесь от предупреждения:

source FILE 2> /dev/null

Ответ 4

Вы можете попробовать

test -f $FILE && source $FILE

Если test возвращает false, вторая часть && не оценивается

Ответ 5

Это самое короткое, что я мог получить (имя файла плюс 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

Ответ 6

Если вы не связаны с выходом script, вы можете просто перенаправить стандартную ошибку на /dev/null примерно так:

$ source FILE 2> /dev/null