Как сделать cp / mv или команду для имени файла, заданного в переменной, содержащей определенный символ в шеллскрипте? - PullRequest
0 голосов
/ 30 апреля 2020

Я запускаю свой сценарий через консоль:

sh ./application.sh CurriculumVitae\ \(January\ 2020\).pdf

, содержащую обратную косую черту, позволяющую экранировать специальные символы.

В приложении . sh Мне нужно сделать копию этого входного файла, поэтому я запускаю следующий код, чтобы фактически добавить эти обратные косые черты и скопировать его:

ORIGINAL_FILE="$1"
COMMAND_FILE=$( echo "$ORIGINAL_FILE" | sed 's/ /\\ /g' )

eval cp "$COMMAND_FILE" ".temp/"

, где $ 1 - CurriculumVitae (January 2020).pdf, а $ ORIGINAL_FILE - CurriculumVitae\ \(January\ 2020\).pdf.

Но мой eval cp "$COMMAND_FILE" ".temp/" завершается ошибкой со следующей ошибкой:

./application.sh: eval: line 52: syntax error near unexpected token `('
./application.sh: eval: line 52: `cp CurriculumVitae\ \(January\ 2020\).pdf .temp/'

Как решить эту проблему в переменной? Спасибо

1 Ответ

0 голосов
/ 30 апреля 2020

Команды из трех строк должны быть просто заменены на эту cp "$1" ".temp/"

...