URL-адрес оболочки Bash, созданный с помощью переменных, отсутствует после вставки за http: //

Судя по этому сообщению об ошибке, могу поспорить, что

  • , несмотря на ваш тег «linux», вы, вероятно, не используете систему на базе Linux, так как найти реализации обычно встречается в системах на базе Linux, не используйте эту формулировку для ошибок о неизвестных параметрах
  • переменная $PATH не установлена ​​(что указывает на то, что оболочка, в которой вы запускаете, вероятно, является оболочкой Bourne или Korn (реализация AT&T)).

Эта недопустимая опция — это формулировка, обычно используемая в традиционных реализациях Unix find.

Эти традиционные реализации также требуют по крайней мере один аргумент файла, прежде чем вы сможете использовать предикат, такой как -имя.

В противном случае -имя будет восприниматься как опция (в отличие от предикатов), если это следующий аргумент после find.

И -n (первая опция в -name, которая является сокращением от -n -a -m -e) не является допустимым найти опцию.

Так что, скорее всего, расширение $PATH вообще не приводит к аргументу.

Это может произойти в случаях, когда:

  1. $PATH не установлен
  2. $PATH установлен в пустую строку
  3. $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 буквально).

0
28.07.2017, 19:21
1 ответ

Вам необходимо установить переменную $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"
4
28.01.2020, 02:24

Теги

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