Cygwin 带有scp变量的sh脚本

Cygwin 带有scp变量的sh脚本,cygwin,sh,scp,Cygwin,Sh,Scp,我正在尝试编写一个简单的脚本,它将根据文件名找出文件的最新版本,然后将该文件下载到本地计算机 我不明白的是,为什么我的代码会在shell中工作,但在作为脚本运行时却不工作。我还在cygwin上运行我的脚本,不确定这是否会产生影响 这是剧本 #!/bin/sh x=$(ssh user@hostname 'ls -r -t /vgf/day1*.gif | tail -1') echo $x scp user@hostname:"${x}" /images/day1.gif x的赋值是正确的,但

我正在尝试编写一个简单的脚本,它将根据文件名找出文件的最新版本,然后将该文件下载到本地计算机

我不明白的是,为什么我的代码会在shell中工作,但在作为脚本运行时却不工作。我还在cygwin上运行我的脚本,不确定这是否会产生影响

这是剧本

#!/bin/sh
x=$(ssh user@hostname 'ls -r -t /vgf/day1*.gif | tail -1')
echo $x
scp user@hostname:"${x}" /images/day1.gif
x的赋值是正确的,但是当我使用scp命令时,我会收到一些与

: No such file or directoryif
但是,如果我在shell中运行scp命令,它就会工作

$ sh download.sh
/vgf/day1.gif
: No such file or directoryif
$ scp user@hostname:"${x}" /images/day1.gif
day1.gif                                              100%   22KB  22.1KB/s   00:00
我愿意接受不同的解决方案。如果我可以通过一些linux管理来防止版本增加,我可能会遵循这条路线,尽管我仍然想知道这里的问题是什么


说到版本,我指的是day1_001.gif,新版本变成day1_002.gif,依此类推。因此,当文件保存文件day1.gif时,它将覆盖原始文件而不创建其他版本。

使用-x选项运行脚本,您可以设置-x以跟踪代码中的问题区域。该错误消息是一个标准消息,您可能有一个未定义的变量,因为它是一个shell变量,而不是环境变量、引用问题或复杂的文件名。但我担心,面对尴尬的名字,用shell访问文件很难做到正确。这是系统管理员转向perl或python的原因之一。对于文件的阴影树,您应该检查rsync,它可以使用ssh shell进行远程访问,并具有许多用于显示更改的文件的功能,这些功能可以为您的scriptsAh、cygwin创建方便的列表。我不记得cygwin是否使用结尾。使用dos2unix myscscript易于检查。这可能会立即解决您的问题,否则不会损害您的脚本。祝你好运