Выполните это так: "$VAR"
.Это одна из наиболее важных ошибок в сценариях оболочки, поскольку строки всегда подставляются буквально, а любые содержащиеся в них пробелы обрабатываются как разделители токенов, а не как символы строки.Подумайте о замене переменной как своего рода вставку кода во время выполнения.
Что действительно происходит, когда вы пишете $VAR
, так это то, что оболочка пытается выполнить двоичный файл /c/Program
с первым аргументом Files/TortoiseGit/bin/TortoisePlink.exe
.
Я научился этому нелегко, получив странную синтаксическую ошибку в большом сценарии оболочки для определенного ввода.Никакие другие языки, о которых я могу думать, не могут жаловаться на синтаксические ошибки, если входные данные во время выполнения содержат специальные символы - но это природа сценариев оболочки, поскольку такие интерпретаторы команд, как bash и sh, интерпретируют код построчно.
Всякий раз, когда выожидайте, что строка будет содержать пробелы, и вы не хотите рассматривать ее как отдельные токены, заключите ее в двойные кавычки.