Linux 通过ssh连接使用的脚本不';不要执行命令。如果直接在ssh机器上执行,则会执行
我需要使用ssh连接执行脚本,然后脚本应该通过第二个ssh连接执行第二个脚本 到目前为止,脚本已正确创建、复制和执行。但是,在上一个shh连接中,脚本中的命令似乎根本无法获得选项 这是我所拥有的一个例子: 脚本1,使用ssh-T执行user@machine1“script1.sh”来自本地计算机:Linux 通过ssh连接使用的脚本不';不要执行命令。如果直接在ssh机器上执行,则会执行,linux,bash,shell,ssh,script,Linux,Bash,Shell,Ssh,Script,我需要使用ssh连接执行脚本,然后脚本应该通过第二个ssh连接执行第二个脚本 到目前为止,脚本已正确创建、复制和执行。但是,在上一个shh连接中,脚本中的命令似乎根本无法获得选项 这是我所拥有的一个例子: 脚本1,使用ssh-T执行user@machine1“script1.sh”来自本地计算机: #/垃圾箱/垃圾箱 *使用scp将script2.sh复制到machine2上的正确目标* ssh-Tuser@machine2“location/script2.sh” Script2,由mach
#/垃圾箱/垃圾箱
*使用scp将script2.sh复制到machine2上的正确目标*
ssh-Tuser@machine2“location/script2.sh”
Script2,由machine1中的第一个脚本执行:
#/垃圾箱/垃圾箱
cd路径/of/script2
*一些不相关的东西*
bjobs-V#有问题的指挥
当脚本在machine2上手动执行时,它可以正常工作,当通过ssh连接执行相同的脚本时,我得到未知选项:V
我尝试了我能想到的或在互联网上找到的一切:
bjobs \-V#未知选项:V
bjobs'-V'#未知选项:V
选项=(-V)
bjobs“\${options[@]}”未知选项:V
command=“bjobs-V”
eval\$command#未知选项:V
我尝试了其他命令,得到:
ls-lla#忽略-lla选项
选项=(-lla)
ls“\${options[@]}”工作正常
free-g#工作正常
选项=(-g)
免费的“\${options[@]}”功能正常
如果我通过machine1和machine2手动连接并使用/script2
执行脚本,所有这些变体都可以正常工作
有人知道发生了什么吗?我没有主意了
使用tripleee的建议进行编辑:
ssh-Tuser@machine2
bjobs型
bjobs是/usr/share/lsf/9.1/linux2.6-glibc2.3-x86_64/bin/bjobs
ssh-Tuser@machine2bjobs型
bjobs是/usr/bin/bjobs
最直接的解决办法是在脚本开头将/usr/share/lsf/9.1/linux2.6-glibc2.3-x86_64/bin
添加到路径中,或者使用要运行的bjobs
版本的完整路径
PATH=/usr/share/lsf/9.1/linux2.6-glibc2.3-x86_64/bin:$PATH
或
:
/usr/share/lsf/9.1/linux2.6-glibc2.3-x86_64/bin/bjobs-V
引用未知选项根本不会更改命令接收的内容。您可能有两个不同版本的bjobs
,其中一个在登录时执行(可能是因为您的PATH
会有所不同),另一个版本可能是非交互式shell的旧版本。尝试从交互式shell和从ssh
键入bjobs
,然后进行比较。请你的问题包括这些调试细节。引用部分只是出于绝望。我根据你的建议编辑了这个问题。似乎有些不同!