Как переписать скрипт



  • Здравствуйте уважаемые форумчане.
    Помогите спортировать скрипт. Сразу прошу не гнобить ибо я не программист.

    Есть простой код который отлично отрабатывает в ubuntu на bash

    #!/bin/bash
    str1=`ping -q -c 5 10.1.1.254`
    str2="0%"
    if [[ $str1 != *$str2*  ]]
    then
            echo "loss"
    else
            echo "norm"
    fi
    

    Который не отрабатывается в sh

    #!/bin/bash на #!/bin/sh я менял, и не только.

    Пробовал самыми разными вариантами вплоть до строк
    ping -c 5 10.1.1.254 &> /dev/null && echo "norm" || echo "loss"
    но дело в самом синтаксисе сравнения

    Почему-то возвращается всегда одинаковое значение.
    Пингается хост или нет, всё равно sh говорит что переменные не совпадают.

    Подскажите как написать правильно. Запускается скрипт из cron'a



  • ping -c 5 10.1.1.254 &> /dev/null && echo "norm" || echo "loss"

    ping -c 5 10.1.1.254 > /dev/null && echo "norm" || echo "loss"

    без амперсанда попробуйте. #!/bin/sh будет работать



  • @httpxss:

    ping -c 5 10.1.1.254 &> /dev/null && echo "norm" || echo "loss"

    ping -c 5 10.1.1.254 > /dev/null && echo "norm" || echo "loss"

    без амперсанда попробуйте. #!/bin/sh будет работать

    Будете смеятся и удивляться но так тоже не работает)) Все время возвращает "norm", даже если вместо хоста какую-нибудь белеберду написать)

    Но проблемы решил таким синтаксисом:

    #!/bin/sh
    if ping -q -c 4 10.8.0.1 | grep ', 0.0%' >/dev/null; then
    код
    else
    код
    fi
    

Log in to reply