Редактирование: после выбора другого подхода я придумал гораздо более простой однострочный текст, который в основном работает с завершением табуляции (пока, конечно, не переменные):
for index in {28..54}; do ln "/home/user/archive/_DATA_ARCHIVE/.data/Example Complete Series + Movies [Dual Audio]/Example [Dual Audio DVD 480p]/(Hi10)_Example_-_0${index}_(DVD_480p)_(a-S)_("*").mkv" "/home/user/archive/_DATA_ARCHIVE/_video_storage/Anime/Shows/Example/Season 2/Example S2E0${index}.mkv"; done
Итак, у меня было кто-то выручил, и, к счастью, я смог ее решить.
Сначала мы используем -r
в команде read
, чтобы не анализировать escape-символы.
Затем мы присваиваем lnFrom
и lnTo
без кавычек:
lnFrom=$from$formatOldStart$currentEpisodeNumber$formatOldEnd
lnTo=$to$formatNewStart$currentEpisodeNumber$formatNewEnd
Затем мы используем eval
в команде ln
для анализа переменных:
eval ln "$lnFrom" "$lnTo"
Теперь да, я понимаю проблемы с eval из-за того, что это проблема безопасности, но этот скрипт работает в закрытой сети у меня дома, поэтому мне все равно.
Если кто-то может предоставить решение, которое работает без Eval, я был бы более чем счастлив принять этот ответ.
Извините, если это было очевидно для многих из вас. Я знаком с JavaScript на работе, но я не очень знаком с bash / unix, кроме команд basi c для обхода ОС.