Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash脚本:如何使用$myVar作为参数之一运行命令?_Bash - Fatal编程技术网

Bash脚本:如何使用$myVar作为参数之一运行命令?

Bash脚本:如何使用$myVar作为参数之一运行命令?,bash,Bash,我有一个bash脚本,它分为两台机器并运行相同的命令 我想将其存储在var中,但我不确定在运行命令时如何引用var的内容 ssh -o StrictHostKeyChecking=no ubuntu@123.123.123 -i ./travis/id_rsa <<-END sudo su; ... echo "Done!"; END ssh -o StrictHostKeyChecking=no ubuntu@456.456.456 -i ./travis/id_r

我有一个bash脚本,它分为两台机器并运行相同的命令

我想将其存储在var中,但我不确定在运行命令时如何引用var的内容

ssh -o StrictHostKeyChecking=no ubuntu@123.123.123 -i ./travis/id_rsa <<-END
  sudo su;
  ...
  echo "Done!";
END


ssh -o StrictHostKeyChecking=no ubuntu@456.456.456 -i ./travis/id_rsa <<-END
  sudo su;
  ...
  echo "Done!";
END

ssh-o StrictHostKeyChecking=noubuntu@123.123.123-i./travis/id\u rsa我相信你想做这样的事情:

cmds="sudo bash -c 'command1; command2; command3;'"
ssh ... "$cmds"

我相信你想这样做:

cmds="sudo bash -c 'command1; command2; command3;'"
ssh ... "$cmds"

如果我完全能够理解您的要求,那么您真的不想将命令放入变量中

for host in 123.123.123 456.456.456; do
    ssh -o StrictHostKeyChecking=no ubuntu@"$host" -i ./travis/id_rsa<<-\____here
        sudo -s <<-_________there
            : your script goes here
________there
        echo "Done."
____here
done
123.123.123 456.456.456中主机的
;做

ssh-o strichhostkeychecking=no ubuntu@“$host”-i./travis/id_rsa如果我完全能够理解您的要求,那么您真的不想将命令放入变量中

for host in 123.123.123 456.456.456; do
    ssh -o StrictHostKeyChecking=no ubuntu@"$host" -i ./travis/id_rsa<<-\____here
        sudo -s <<-_________there
            : your script goes here
________there
        echo "Done."
____here
done
123.123.123 456.456.456中主机的
;做

ssh-o strithhostkeychecking=no ubuntu@“$host”-i./travis/idrsa您希望变量包含什么内容非常不清楚,但至少您似乎对如何使用
su
感到困惑。看到这个:也许你想要
script='hostname;在123.123.123 456.456中为主机标识“
,然后为主机标识
;do ssh-o etc etc ubuntu@“$host”sudo-s
script=$(命令)
命令的标准输出指定为
脚本的值,因此这似乎根本不是您想要的。您希望变量包含什么内容也非常不清楚,但至少您似乎对如何使用
su
感到困惑。看到这个:也许你想要
script='hostname;在123.123.123 456.456中为主机标识“
,然后为主机标识
;ssh-o etc etc ubuntu@“$host”sudo-s
script=$(command)
command
的标准输出指定为
script
的值,因此这似乎根本不是您想要的。而且@CharlesDuffy即使在这种情况下,我也不推荐它,尤其是在
$cmds
周围没有双引号的情况下。考虑<代码> CMDs=“SUDO BASH-C”回音CP*/Talk/DIR;'——<代码> */COD>将扩展到本地计算机上的文件,然后在SSH上发送!@戈登戴维森,哦,你说得对——我没有注意到答案不是引用
“$cmds”
扩展。事实上,这是一种糟糕的做法,即使在命令被赋值时没有替换的变量。@JonasBjork,你愿意用你的答案来纠正这个错误吗?在分词方面,使用数组而不是字符串会更安全。@CharlesDuffy即使在这种情况下,我也不建议这样做,尤其是在
$cmds
周围没有双引号。考虑<代码> CMDs=“SUDO BASH-C”回音CP*/Talk/DIR;'——<代码> */COD>将扩展到本地计算机上的文件,然后在SSH上发送!@戈登戴维森,哦,你说得对——我没有注意到答案不是引用
“$cmds”
扩展。事实上,这是一种糟糕的做法,即使在命令被分配时没有替换的变量。@JonasBjork,你愿意用你的答案来纠正这个错误吗?在分词方面,使用数组而不是字符串会更安全。