Linux shell脚本中通过ssh的sudo中的多个命令

Linux shell脚本中通过ssh的sudo中的多个命令,linux,shell,ssh,sudo,Linux,Shell,Ssh,Sudo,我的脚本如下 #!/bin/bash version = 1.1 echo "Enter username" read UserName ssh -t $UserName@server bash -c " ' ./runSomeScript echo "Entering Sudo" sudo -s -u user1 -c "cd random; ./randomscrip xx-$version-yy" '" 但这是行不通的 基本上,我想对一个帐户执行ssh。然后运行脚本 然

我的脚本如下

#!/bin/bash

version = 1.1

echo "Enter username"

read UserName

ssh -t $UserName@server bash -c " '

./runSomeScript

echo "Entering Sudo"

sudo -s -u user1 -c "cd random; ./randomscrip xx-$version-yy"

'"

但这是行不通的

基本上,我想对一个帐户执行ssh。然后运行脚本 然后以用户作为user1执行sudo,然后仅以sudo用户的身份运行命令cd random和./randomscrip(以xx版本yy为参数)。
但是sudo内部的命令不起作用。

您的引用有点粗心。在第一级和第三级引用中使用双引号,shell无法区分其中一个。改为这样做:

sudoScript="cd random; ./randomscrip xx-${version}-yy"
sshScript='
  ./runSomeScript
  echo "Entering Sudo"
  sudo -s -u user1 bash -c '"'${sudoScript}'"'
'
ssh -t ${UserName}@server "${sshScript}"
但要注意,如果嵌入任何单引号,除非添加一层shell引号,否则仍然会出错


最后,删除
=
周围的空格。当分配给
version

不工作时,sudoScript中的命令将失败。sudoScript中的命令在ssh会话中运行,而不是在sudo模式下运行。@A.G.你说得对。似乎sudo-s并没有像手册页承诺的那样在shell中运行命令。我已经对它进行了编辑和测试,以确保它能正常工作。我知道现在已经晚了。谢谢