Не удается эхо или создать символическую ссылку на файл со специальными символами в имени внутри сценария bash

Я пытаюсь создать символическую ссылку на файлы со следующим соглашением об именах:

.$abc$namehere.zip;1 

Как видно, в нем есть следующие специальные символы:. $;

В моем сценарии bash у меня есть следующие строки кода:

 FILE1=`find /mydir/ -name "\.\$abc\$*namehere*.zip*" | sort -rn | head -1` ln -s $FILE1 . echo "$FILE1" 

Когда я выдаю команду find самостоятельно в командной строке, я получаю результат, отображаемый на экране интересующего меня файла. Однако, когда он помещен в сценарий выше, команда символической ссылки возвращает:

 ln: `./.': cannot overwrite directory 

И команда echo возвращает пустую строку вместо имени файла.

Могу ли я получить некоторую помощь относительно того, как я могу исправить это в своем сценарии, чтобы создать символическую ссылку на эти файлы со специальными символами?

Вместо $() back (backticks $() используйте $()

 FILE1=$(find /mydir/ -name "\.\$abc\$*namehere*.zip*" | sort -rn | head -1) ln -s "$FILE1" . echo "$FILE1" 

Проблема в том, что, поскольку вы вставляете имя своего файла в двойные кавычки, bash расширяет его, чтобы это

 \.\$abc\$*namehere*.zip* 

расширяется до

 \.namehere*.zip* 

Это одна из многих причин, почему backticks устарели, а $() всегда предпочтительнее.