Неожиданный файл "[" в /bin на macos

Отправляемая вами строка содержит следующее:

$x$

который расширяется bash как содержимое переменной $x. Поскольку $xпусто, $x$заменяется на $. Вы можете избежать расширения переменной, используя простые кавычки вместо двойных :

.
psql -d mydb -c 'CREATE FUNCTION f_showfile(myfile text) RETURNS text AS $x$ BEGIN RETURN pg_read_file(myfile, 0, 100000); END; $x$ LANGUAGE PLPGSQL SECURITY DEFINER;'
-1
14.03.2020, 17:04
1 ответ

Открытая квадратная скобка, [, представляет собой стандартный исполняемый файл, эквивалентный test, который обеспечивает синтаксический сахар при написании сценариев оболочки (, т. е. "выглядит красиво")

fruit="banana"
if [ banana = "$fruit" ]    # "[" really is an executable
then
    echo "Yum, yum"
fi

Или

fruit="banana"
if test pear = "$fruit"
then
    echo "Yum, yum"
fi

Они прямо эквивалентны.

На самом деле ваша оболочка, вероятно, реализует как [, так и testнапрямую, поэтому, когда вы вызываете их, ваша оболочка выполняет команду, а не запускает для этого отдельный процесс. Опять же, никакой заметной разницы для вас, пользователь.

4
28.04.2021, 23:20

Теги

Похожие вопросы