Test

testUNIX-утиліта для перевірки типу файлу і порівняння значень. Повертає код повернення 0 (істина) або 1 (неправда) в залежності обчислення виразу-параметра. Вирази можуть бути як унарними, так і бінарними. Унарні вирази часто використовуються для перевірки статусу файлу. Також допустиме порівняння чисел і рядків.

Використання

test [expr]
test {--help,--version}

Зазвичай використовується в нескладних shell-скриптах для перевірок різного роду. Наступний приклад видалить звичайний файл text.txt, якщо він існує, або виведе повідомлення, що даного файлу немає.

#!/bin/sh
if test -f test.txt
then
  rm test.txt
else
  echo 'файл test.txt не знайдено'
fi

Для скорочення коду сценарію використовують парний оператор '[' як синонім test

#!/bin/sh
if [ -f test.txt ]
then
  rm test.txt
else
  echo 'файл test.txt не знайдено'
fi

Параметри запуску

  • -b file — істина, якщо file існує і є спеціальним блоковим пристроєм.
  • -c file — істина, якщо file існує і є символьним пристроєм.
  • -d file — істина, якщо file існує і є каталогом.
  • -e file — істина, якщо file існує.
  • -f file — істина, якщо file існує і є звичайним файлом.
  • -g file — істина, якщо file існує і має встановлений груповий ідентифікатор

(set-group-id).

  • -k file — істина, якщо file має встановлений біт «sticky».
  • -L file — істина, якщо file існує і є символьним посиланням.
  • -p file — істина, якщо file існує і є іменованим каналом (pipe).
  • -r file — істина, якщо file існує і дозволяє читання.
  • -s file — істина, якщо file існує і має розмір більш ніж нуль.
  • -S file — істина, якщо file існує і є сокетом.
  • -t [fd] — істина, якщо fd відкритий на терміналі. Якщо fd пропущено, за умовчанням 1 (стандартний пристрій виводу).
  • -u file — істина, якщо file існує і має встановлений біт користувача (set-user-id).
  • -w file — істина, якщо file існує і дозволено запис.
  • -x file — істина, якщо file існує і дозволено запуск.
  • -O file — істина, якщо file існує і його власник має ефективний ідентифікатор користувача.
  • -G file — істина, якщо file існує і його власник має ефективний ідентифікатор групи.
  • file1 -nt file2 — істина, якщо file1 новіший за датою модифікації, ніж file2.
  • file1 -ot file2 — істина, якщо file1 старіший за file2.
  • file1 -ef file2 — істина, якщо file1 і file2 мають той же пристрій і номер inode.
  • -z string — істина, якщо довжина string дорівнює нулю.
  • -n string string — істина, якщо довжина string не нуль.
  • string1 = string2 — істина, якщо рядки однакові.
  • string1 != string2 — істина, якщо рядки різні.
  • ! expr — істина, якщо вираз expr хибний.
  • expr1 -a expr2 — істина, якщо обидва вирази expr1 і expr2 істині.
  • expr1 -o expr2 — істина, якщо expr1 або expr2 істинний.
  • arg1 OP arg2 -eq, -ne, -lt, -le, -gt, або -ge — ці арифметичні бінарні операції повертають істину, якщо arg1 дорівнює, не дорівнює, менше ніж, менше ніж або дорівнює, більш ніж, або більше або дорівнює чим arg2, відповідно. arg1 і arg2 можуть бути цілими числами, або спеціальними виразами -l string, які обчислюють довжину string.

Посилання