Поскольку ваша команда ssh заключена в двойные кавычки, все ваши переменные $
интерполируются локальной оболочкой, прежде чем переходить к удаленной оболочке. Либо используйте одинарные кавычки, либо избегайте своих $
сигил.
Ex:
ssh -p 2001 -q root@12.13.14.15 "echo; echo Now On Target Server, I see; ls -l /tmp/Folder-1.1.0.1053/*; for v in A B C; do echo === \$v===; done; echo; for f in /tmp/Folder-1.1.0.1053/*; do echo File is == \$f; done"
или
ssh -p 2001 -q root@12.13.14.15 'echo; echo Now On Target Server, I see; ls -l /tmp/Folder-1.1.0.1053/*; for v in A B C; do echo === $v===; done; echo; for f in /tmp/Folder-1.1.0.1053/*; do echo File is == $f; done'
См. Очень важное примечание ниже. Экранируйте только переменную, созданную и используемую в сеансе SSH (например, здесь: for
loop) или любую другую, где находится внутри сеанса SSH. НЕ экранируйте переменную, которая была определена в вашем скрипте и вне сеанса SSH, например: как используется в части команда / ввод в цикле for
. то есть for v in ${staging_area}/*.tar.gz; do echo ==\$v;done"
здесь я сбежал \$v
но не сбежал ${staging_area}