Bash脚本:如何使用$myVar作为参数之一运行命令?
我有一个bash脚本,它分为两台机器并运行相同的命令 我想将其存储在var中,但我不确定在运行命令时如何引用var的内容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
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-sscript=$(命令)
将命令的标准输出指定为脚本的值,因此这似乎根本不是您想要的。您希望变量包含什么内容也非常不清楚,但至少您似乎对如何使用su
感到困惑。看到这个:也许你想要script='hostname;在123.123.123 456.456中为主机标识“
,然后为主机标识;ssh-o etc etc ubuntu@“$host”sudo-sscript=$(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,你愿意用你的答案来纠正这个错误吗?在分词方面,使用数组而不是字符串会更安全。