Если у вас есть «не отвечающая» зависимость, вы можете просто продолжить работу без exit 1
и еще несколько раз повторить попытку соединения ssh
:
for i in $host
do
counter=0
while [ $counter -ne 3 ]; do
# echo "Shutting down Host in $Region with ip addrss $i"
ssh -o ConnectTimeout=10 -i $key_path -p 2222 $user@$i "sudo init 0" &> /dev/null
if [ $? -ne 0 ]; then
echo "$i is shutdown!"
counter=3
else
echo "There is some issue, try again"
counter=$(($counter+1))
fi
done
done
Некрасиво, но
$ echo '2 + 2 = $$shell:echo 2 + 2 | bc$$ // and some text here' |
sed -e 's/\(.*\)\$\$shell:\(.*\)\$\$\(.*\)/printf "%s%s%s\n" "\1" "$(sh -c "\2")" "\3"/e'
2 + 2 = 4 // and some text here
Вы можете использовать Perl...
perl -pe 's[\$\$shell:(.*?)\$\$][ qx($1) =~ s/\n$//r ]ge' < inputfile
(qx
эквивалентно подстановке команд, за исключением того, что она не удаляет завершающие символы новой строки, поэтому это делает =~ s/\n$//r
. Окружение s[][]ge
— это просто обычная замена с Perl-выражением в замене.)