预期使用 Do 和 ssh 连接的条件二元运算符
conditional binary operator expected with Do and ssh connection
这是我的代码的一部分,我正在努力在通过 ssh 连接到该服务器的远程服务器中查找单词
filename=test.repo
word=fail
exists=$(grep -c $word $filename)
file_server=
for i in $(cat $file_server)
do echo ''; echo ;
ssh $i "printf '\e[33m'; hostname; printf '\e[0m\n]' ;
cd /etc/yum.repos.d/;
grep -c $word $filename;
echo $exists;
if [[ $exists -gt 0 ]];
then printf 'Keyword found, cleanup starts \n';
else printf ''$word', was not found, nothing to do here with '$filename'. \n';
fi"
done
这只适用于 Do 命令,但如果我添加 if [[$exist -gt 0]]; , 这有一个错误
bash: -c: 第 4 行:需要条件二元运算符
bash: -c: 第 4 行:;' bash: -c: line 4:
附近的语法错误 if [[ -gt 0]]; '
任何建议
这一行应该从脚本的开头删掉:
存在=$(grep -c $word $文件名)
并在循环内替换对 grep 的调用。
我做了什么,在同事的帮助下解决了这个问题,避免在 ssh 会话中使用变量。
file_server=
filename=testfile.repo
keyword=testword
if [[ -z ]]
then
printf "\t\e[0;31m==================== ERROR ======================\n"
printf "\tServer list not found\e[0;0m\n"
exit 1
fi
for i in $(cat $file_server)
do echo ''; echo ;
ssh $i "printf '\e[33m'; hostname; printf '\e[0m\n';
cd /etc/yum.repos.d/;
if grep -q $keyword $filename;
then
printf '\e[33m$keyword found, cleanup starts\e[0m\n';
sed -i.BAK '/^failovermethod=/d' $filename
grep failovermethod $filename;
printf '\e[33mBackup file created with the $keyword with this name $filename.BAK\e[0m\n';
grep 'failovermethod' pgdg-redhat-all-test.repo.BAK;
else
printf '\e[33m${keyword^^}\e[32m, was not found, nothing to do here. \e[0m\n';
fi;";
done
这是我的代码的一部分,我正在努力在通过 ssh 连接到该服务器的远程服务器中查找单词
filename=test.repo
word=fail
exists=$(grep -c $word $filename)
file_server=
for i in $(cat $file_server)
do echo ''; echo ;
ssh $i "printf '\e[33m'; hostname; printf '\e[0m\n]' ;
cd /etc/yum.repos.d/;
grep -c $word $filename;
echo $exists;
if [[ $exists -gt 0 ]];
then printf 'Keyword found, cleanup starts \n';
else printf ''$word', was not found, nothing to do here with '$filename'. \n';
fi"
done
这只适用于 Do 命令,但如果我添加 if [[$exist -gt 0]]; , 这有一个错误
bash: -c: 第 4 行:需要条件二元运算符
bash: -c: 第 4 行:;' bash: -c: line 4:
附近的语法错误 if [[ -gt 0]]; '
任何建议
这一行应该从脚本的开头删掉: 存在=$(grep -c $word $文件名)
并在循环内替换对 grep 的调用。
我做了什么,在同事的帮助下解决了这个问题,避免在 ssh 会话中使用变量。
file_server=
filename=testfile.repo
keyword=testword
if [[ -z ]]
then
printf "\t\e[0;31m==================== ERROR ======================\n"
printf "\tServer list not found\e[0;0m\n"
exit 1
fi
for i in $(cat $file_server)
do echo ''; echo ;
ssh $i "printf '\e[33m'; hostname; printf '\e[0m\n';
cd /etc/yum.repos.d/;
if grep -q $keyword $filename;
then
printf '\e[33m$keyword found, cleanup starts\e[0m\n';
sed -i.BAK '/^failovermethod=/d' $filename
grep failovermethod $filename;
printf '\e[33mBackup file created with the $keyword with this name $filename.BAK\e[0m\n';
grep 'failovermethod' pgdg-redhat-all-test.repo.BAK;
else
printf '\e[33m${keyword^^}\e[32m, was not found, nothing to do here. \e[0m\n';
fi;";
done