Онлайн робочі станції OnWorks Linux та Windows

логотип

Безкоштовний онлайн-хостинг для робочих станцій

<Попередній | зміст | Наступна>

Більш сучасна версія тесту

Останні версії бити включити складену команду, яка діє як розширена заміна для тест. Він використовує наступний синтаксис:

[[ вираз ]]

де, як тест, вираз є виразом, який оцінює як істинний, так і хибний результат. The [[]] команда дуже схожа на тест (він підтримує всі його вирази), але


додає новий важливий рядковий вираз:

string1 =~ regex

який повертає true if string1 відповідає розширеному регулярному виразу regex. Це відкриває багато можливостей для виконання таких завдань, як перевірка даних. У нашому попередньому прикладі цілочисельних виразів сценарій зазнає невдачі, якщо константа INT містить будь-що, крім цілого числа. Скрипту потрібен спосіб перевірити, що константа містить ціле число. Використання [[]] з =~ оператор рядкового виразу, ми могли б покращити сценарій таким чином:



#! / бін / баш


# test-integer2: оцінити значення цілого числа.


INT=-5


якщо [[ "$INT" =~ ^-?[0-9]+$ ]]; тоді

якщо [ $INT -eq 0 ]; потім луна "INT дорівнює нулю".

ще

якщо [ $INT -lt 0 ]; потім луна "INT негативний".

ще

echo "INT позитивний."

fi

якщо [ $((INT % 2)) -екв 0 ]; потім луна "INT парне".

ще

echo "INT непарний."

fi

fi

ще

echo "INT не є цілим числом." >&2 вихід 1

fi

#! / бін / баш


# test-integer2: оцінити значення цілого числа.


INT=-5


якщо [[ "$INT" =~ ^-?[0-9]+$ ]]; тоді

якщо [ $INT -eq 0 ]; потім луна "INT дорівнює нулю".

ще

якщо [ $INT -lt 0 ]; потім луна "INT негативний".

ще

echo "INT позитивний."

fi

якщо [ $((INT % 2)) -екв 0 ]; потім луна "INT парне".

ще

echo "INT непарний."

fi

fi

ще

echo "INT не є цілим числом." >&2 вихід 1

fi


Застосовуючи регулярний вираз, ми можемо обмежити значення INT лише для рядків, які починаються з необов’язкового знака мінус, за яким слідують одне чи декілька цифр. Цей вираз також усуває можливість порожніх значень.

Ще одна додаткова функція [[]] Ест дие ле == Оператор підтримує відповідність шаблону так само, як і розширення шляху. Наприклад:



[me@linuxbox ~]$ FILE=foo.bar

[me@linuxbox ~]$ FILE=foo.bar

Більш сучасна версія тесту


[me@linuxbox ~]$ якщо [[ $FILE == foo.* ]]; тоді

> echo "$FILE відповідає шаблону 'foo.*'"

> fi

foo.bar відповідає шаблону 'foo.*'

[me@linuxbox ~]$ якщо [[ $FILE == foo.* ]]; тоді

> echo "$FILE відповідає шаблону 'foo.*'"

> fi

foo.bar відповідає шаблону 'foo.*'


Це робить [[]] корисно для оцінки файлів і шляхів.


Найпопулярніші хмарні обчислення ОС на OnWorks: