SSHを使用してforループ内でIFステートメントを実行する

SSHを使用してforループ内でIFステートメントを実行する

独立して動作しますが、一緒に動作しない2つのコードがあります。 <Command_To_Be_Ran>内にifステートメントを入れる必要があります。どのように動作させることができるのアイデアはありますか?

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ことができ、二重引用符(")を使用すると、シェルと同様にコマンドを実行できます。

zshがインストールされている場合(または一部のbashバージョンでも)、次のものをeval使用できます。bash -c

おすすめ記事