使用 ssh 在 for 循环内运行 IF 语句

使用 ssh 在 for 循环内运行 IF 语句

我有两段独立工作的代码,但不能一起工作。我需要将 if 语句放在 <Command_To_Be_Ran> 内。我有什么想法可以让它发挥作用吗?

for i in t{1..2}; do
  ssh -qex -t $i 'echo <Sudo_Password> | sudo -S <Command_To_Be_Ran>'
done

if (( $(grep -o "fips=1" /etc/default/grub | wc -l) > 1 )); then 
    sed -i 's/ fips=1//' /etc/default/grub
fi

答案1

我想现在它会起作用了:D

for i in t{1..2}; do    
  ssh -qex -t $i "echo <Sudo_Password> | sudo -S bash -c '\
    if (( $(grep -o 'fips=1' /etc/default/grub | wc -l) > 1 )); \
      then sed -i 's/ fips=1//' /etc/default/grub ;\
    fi'"
done

应该可以,换行符可以用;and替换bash -c,双引号 ( ") 使您能够像在 shell 中一样运行命令。

如果您安装了 zsh(或者甚至在某些版本的 bash 中),您可能可以eval使用bash -c

相关内容