Когда я пытаюсь передать аргументы как переменные любым командам в bash, я вижу дополнительные кавычки, добавленные bash, если значение переменной содержит пробелы.
Я создаю файл "some file.txt" и добавляю его в переменную $file. Я использую $file и сохраняю его в другой переменной $arg с кавычками в $file. Команда, на которую я надеюсь после расширения переменной с помощью bash, была
find . -name "some text.txt"
но я получил ошибку, и фактический файл, который был выполнен,
find . -name '"some' 'file.txt"
Почему это происходит. Как в этом случае работает расширение переменной bash?
$ touch "some file.txt"
$ file="some file.txt"
$ arg=" -name \"$file\""
$ find . $arg
find: paths must precede expression: file.txt"
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
$ set -x
$ find . $arg
+ find . -name '"some' 'file.txt"'
find: paths must precede expression: file.txt"
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
Почему это происходит?