# remote machine "test-script" LINK="/path/to/my/link" # the link points to /path/to/my/file readlink $LINK # outputs /path/to/my/file TEST=$(readlink -f "$LINK") echo $TEST # outputs /path/to/my/file
Вдруг это работает, когда я вызываю удаленный скрипт, все работает нормально, но почему он не работает через ssh?
Примечание: [Существуют ли соглашения об именовании переменных в сценариях оболочки?] (Https://unix.stackexchange.com/a/42849/108618)
Kamil Maciorowski 5 лет назад
0
2 ответа на вопрос
2
Lewis M
В этом документе ваши переменные оцениваются на стороне источника. Если вы хотите, чтобы ваши переменные оценивались на целевой стороне, экранируйте $. Например,
Если какая-либо часть слова заключена в кавычки, разделитель является результатом удаления кавычки для слова, и строки в документе здесь не раскрываются. Если слово в кавычках, все линии здесь-документа подвергаются параметр расширения, подстановки команд и арифметических выражений, последовательность символов \newlineигнорируется, и \должны быть использованы для цитирования символов \, $и `.
Так что либо убегайте $(как говорит другой ответ ), либо используйте << "EOF"(с кавычками); в противном случае синтаксис, как $variableи $(…)будет решаться локально.