Ubuntu Server 上的 SSH 参数帮助

Ubuntu Server 上的 SSH 参数帮助

我有一个像这样的变量设置:

SSH_EXEC="ssh -X -o ControlPath=~/.ssh/master-$$ -o ControlPersist=60"

有问题的参数是-X,因为如果我在本地脚本中调用此命令

$SSH_EXEC user@server "./server_script.sh $aFile"

简而言之,它执行以下操作:

if [ -e /path/"$1".name ] || [ -e /path/"$1" ]
then 
   do something
else
   error
   echo "/path/"$1".name"
   exit
fi  

一切正常!但如果我-X用替换-t,我的测试server_script就会失败else。我宁愿不使用 x11,但我不确定是什么区别导致它在一个实例中失败,而在另一个实例中通过。

编辑

因此,我进行了更多故障排除,并决定/path/$1.name在服务器上回显 的值,但结果却是乱码。如果我的$aFile名字恰好是hello.name回显的结果,则当我使用代替.nameello时,还会删除路径的开头。 -t-X

什么可能导致我的变量损坏?

答案1

该变量$aFile可能有一个尾随回车符字符,导致终端在遇到时返回到行的开头。

例如,以下内容:

echo "/path/"hello^M".name"

输出:

/.namehello

这种情况可能是由于 DOS 中的 shell 脚本引起的行尾,导致出现如下行

aFile = "hello"

可以解释为

aFile = "hello"^M

如果是这种情况,您应该能够使用该dos2unix实用程序将您的脚本转换为使用 Unix 行尾。

相关内容