Пожалуйста, помогите мне понять, что не так.Сценарий ниже все время возвращает "не совпадает"
while true
do
PING_OUTPUT="64 bytes from 8.8.8.8: icmp_seq=1 ttl=119 time=35.2 ms" #`ping -c 1 $PING_HOST |sed -n 2p`
echo "$PING_OUTPUT"
if [[ "$PING_OUTPUT" =~ 64\sbytes\sfrom\s8.8.8.8:\sicmp_seq=1\sttl=119\stime=35.2\sms ]]
then
echo "Match"
else
echo "Doesn't match"
fi
read -p "Where to ping?" PING_HOST
done
Я пробовал другой формат регулярного выражения:
if [[ "$PING_OUTPUT" =~ 64[ ]bytes[ ]from[ ]8.8.8.8:[ ]icmp_seq=1[ ]ttl=119[ ]time=35.2[ ]ms ]]
На этот раз он показывает синтаксическую ошибку:
./main_script.sh: line 10: syntax error in conditional expression
./main_script.sh: line 10: syntax error near `]bytes['
./main_script.sh: line 10: ` if [[ "$PING_OUTPUT" =~ 64[ ]bytes[ ]from[ ]8.8.8.8:[ ]icmp_seq=1[ ]ttl=119[ ]time=35.2[ ]ms ]]'
Похоже, правая часть = ~ не интерпретируется как регулярное выражение, но я не могу понять, почему.