sshpass不';不在Bash中工作,但在命令行外部工作

sshpass不';不在Bash中工作,但在命令行外部工作,bash,sshpass,Bash,Sshpass,我正在编写一个脚本,从远程服务器获取文件列表,每个远程服务器都有自己的密码、IP和用户以及路径。这就是为什么我使用sshpass动态地传递password参数。以下是我的脚本,用于暂时获取文件列表: user='username' pass='password' ->>> LOCATION_OF_REMOTE='hostpath' ip='hostip' path='hostpath' data=`/usr/bin/sshpass -p $pass sftp -oBatchM

我正在编写一个脚本,从远程服务器获取文件列表,每个远程服务器都有自己的密码、IP和用户以及路径。这就是为什么我使用sshpass动态地传递password参数。以下是我的脚本,用于暂时获取文件列表:

user='username'
pass='password'  ->>> LOCATION_OF_REMOTE='hostpath'
ip='hostip'
path='hostpath'
data=`/usr/bin/sshpass -p $pass sftp -oBatchMode=no -b - -oStrictHostKeyChecking=no $user@$ip <<_EOF_
cd $path
ls
_EOF_`
echo $data >> list_of_files.txt
user='username'
传递class='password'->>远程class='hostpath'的位置
ip='hostip'
path='hostpath'
data=`/usr/bin/sshpass-p$pass sftp-oBatchMode=no-b--oStrictHostKeyChecking=no$user@$ip list_of_files.txt
运行此脚本时,我遇到错误:

错误:sshpass:无法运行命令:没有这样的文件或目录


而在命令行上的脚本之外,完全相同的命令可以正常工作。当它在脚本中时就不起作用了。我尝试以root和non-root两种方式运行它。我不知道为什么它在脚本中不起作用

我犯了一个非常愚蠢的错误。通过定义变量“PATH”,shell考虑的是它的环境路径,这就是为什么我会出现那个愚蠢的错误。

可能缺少环境中的某些内容,比如从用户配置文件加载的路径。请参阅并@BurnsBA not really helpful您的问题显示的是
路径
(这是安全的),而不是
路径
(这不是)。今后,请确保问题显示的代码本身就产生了您所遇到的确切问题。(顺便说一句,这类错误是为什么至少有一个小写字符的变量名保留给应用程序使用,而不是修改系统或shell行为)