Не понимаю, почему вы использовали "ssh -t" и "bash -l". Они не нужны. Они вызывают проблемы в моей тестовой среде.
Тем не менее, подобные проблемы, скорее всего, вызваны невидимыми персонажами. Чтобы проверить, так ли это, вы можете echo "[$file_name]"
, чтобы увидеть, что в нем.
В данном конкретном случае, пожалуйста, посмотрите, что я нашел:
$ file_name=$(ssh -t testbox "ls -t /home/ec2-user/hello* | head -1")
Connection to xxx closed.
$ echo "[$file_name]"
]/home/ec2-user/hello # <--- the expected output is [/home/ec2-user/hello]
$ scp testbox:$file_name ./
: No such file or directory
Для сравнения, ssh
без -t
дает нам ожидаемый результат:
$ file_name=$(ssh testbox "ls -t /home/ec2-user/hello* | head -1")
$ echo "[$file_name]"
[/home/ec2-user/hello]
$ scp testbox:$file_name ./
hello 100% 0 0.0KB/s 00:00