Судя по этому сообщению об ошибке, могу поспорить, что
найти
реализации обычно встречается в системах на базе Linux, не используйте эту формулировку для ошибок о неизвестных параметрах $PATH
не установлена (что указывает на то, что оболочка, в которой вы запускаете, вероятно, является оболочкой Bourne или Korn (реализация AT&T)). Эта недопустимая опция — это формулировка, обычно используемая в традиционных реализациях Unix find
.
Эти традиционные реализации также требуют по крайней мере один аргумент файла, прежде чем вы сможете использовать предикат, такой как -имя
.
В противном случае -имя
будет восприниматься как опция (в отличие от предикатов), если это следующий аргумент после find
.
И -n
(первая опция в -name
, которая является сокращением от -n -a -m -e
) не является допустимым найти
опцию.
Так что, скорее всего, расширение $PATH
вообще не приводит к аргументу.
Это может произойти в случаях, когда:
$PATH
не установлен $PATH
установлен в пустую строку $PATH
содержит только символы пробела, табуляции или новой строки (значение по умолчанию $IFS
). Поскольку $PATH
— это специальная переменная, содержащая список каталогов, разделенных двоеточием, для поиска исполняемых файлов, включая команду find
, мы можем исключить 3 и, скорее всего, 2 (если только в текущем каталоге есть команда find
), иначе вы получите ошибку find: command not found
.
Когда $PATH
не установлен (1
выше), в execvp()
(как обычно используется env
или find
's -exec
предикат, например) и в некоторых оболочках (включая оболочку Korn и Bourne, обычно используемую в этих традиционных ОС), find
будет найден с помощью поиска в пути поиска по умолчанию (оболочки типа bash
этого не делают, но устанавливают (хотя и не экспортируют) $PATH
значение по умолчанию, когда оно было отключено на старте).
Здесь, я думаю, вы хотите:
$PATH
для хранения имени каталога (например, $dir
) ${dir:-.}
, если вы хотите по умолчанию использовать текущий каталог, если $dir
пуст или не установлен. $PATH
не установлена, что весьма необычно) Итак:
dir=some-dir
find "${dir:-.}" -name "$FILE.log"
Обратите внимание, что предполагается, что $dir
не запускается с -
и иначе не является оператором find
(например, !
, (
, )
), и что $FILE
не содержит подстановочных знаков (*
, ?
, [...]
) (обратите внимание на использование двойных кавычек вместо одинарные кавычки вокруг $FILE.log
, поскольку я предполагаю, что вы хотите найти файлы с именем something.log
, где something
— это содержимое $FILE
. ] в отличие от файлов с именами $FILE.log
буквально).
Вам необходимо установить переменную $URL после $UN и $PW, например:
echo "Please enter your username and password."
read -p "Username: " UN
read -s -p "Password: " PW
URL="http://${UN}:${PW}@localhost:8080/rest/v1"