Test: различия между версиями
[отпатрулированная версия] | [непроверенная версия] |
→test: Исправлена опечатка Метки: с мобильного устройства через мобильное приложение через приложение для Android |
|||
(не показана 31 промежуточная версия 26 участников) | |||
Строка 1: | Строка 1: | ||
{{Заголовок со строчной буквы}} |
{{Заголовок со строчной буквы}} |
||
'''test''' — [[UNIX]]-утилита для проверки типа [[файл]]а и сравнения значений. Возвращает код возврата 0 ( |
'''test''' — [[UNIX]]-утилита для проверки типа [[файл]]а и сравнения значений. Возвращает код возврата 0 () или 1 () в зависимости вычисления выражения <code>expr</code>. Выражения могут быть как унарными, так и бинарными. Унарные выражения часто используются для проверки статуса файла. Также допустимо сравнение чисел и строк. |
||
Начиная с [[UNIX System III]] утилита стала встроенной, также появилась вторая её форма - [.<ref>{{Cite web|url=https://www.in-ulm.de/~mascheck/bourne/#system3|title=traditional Bourne shell family / history and development|publisher=www.in-ulm.de|accessdate=2017-07-15|archive-date=2020-04-14|archive-url=https://web.archive.org/web/20200414150320/https://www.in-ulm.de/~mascheck/bourne/#system3|deadlink=no}}</ref> |
|||
== Использование == |
== Использование == |
||
Строка 6: | Строка 8: | ||
* <code>test {--help,--version}</code> |
* <code>test {--help,--version}</code> |
||
Обычно используется в несложных shell-скриптах для проверок разного рода. Следующий пример удалит обычный файл test.txt если он существует, либо выведет сообщение что данного файла нет. |
Обычно используется в несложных shell-скриптах для проверок разного рода. Следующий пример удалит обычный файл test.txt если он существует, либо выведет сообщение что данного файла нет. |
||
<source lang="bash"> |
|||
<pre> |
|||
#!/bin/sh |
#!/bin/sh |
||
if test -f test.txt |
if test -f test.txt |
||
Строка 16: | Строка 18: | ||
echo 'файл test.txt не найден' |
echo 'файл test.txt не найден' |
||
fi |
fi |
||
</ |
</> |
||
Для сокращения кода сценария используют парный оператор '[' как синоним test |
Для сокращения кода сценария используют парный оператор '[' как синоним test |
||
<source lang="bash"> |
|||
<pre> |
|||
#!/bin/sh |
#!/bin/sh |
||
if [ -f test.txt ] |
if [ -f test.txt ] |
||
Строка 28: | Строка 30: | ||
echo 'файл test.txt не найден' |
echo 'файл test.txt не найден' |
||
fi |
fi |
||
</ |
</> |
||
== Параметры запуска == |
== Параметры запуска == |
||
* <code>- |
* <code>- file</code> — истина, если file существует и является специальным блочным устройством. |
||
* <code>- |
* <code>- file</code> — истина, если file существует и символьное устройство. |
||
* <code>- |
* <code>- file</code> — истина, если file существует и . |
||
* <code>- |
* <code>- file</code> — истина, если file существует. |
||
* <code>- |
* <code>- file</code> — истина, если file существует и . |
||
* <code>-g file</code> — истина, если file существует и имеет установленным групповой идентификатор (set-group-id). |
* <code>-g file</code> — истина, если file существует и имеет установленным групповой идентификатор (set-group-id). |
||
* <code>-k file</code> — истина, если file имеет установленным «sticky» бит. |
* <code>-k file</code> — истина, если file имеет установленным «sticky» бит. |
||
* <code>-L file</code> — истина, если file существует и |
* <code>-L file</code> — истина, если file существует и . |
||
* <code>-p file</code> — истина, если file существует и является именованным каналом (pipe). |
* <code>-p file</code> — истина, если file существует и является именованным каналом (pipe). |
||
* <code>-r file</code> — истина, если file существует и читаем. |
* <code>-r file</code> — истина, если file существует и читаем. |
||
* <code>-s file</code> — истина, если file существует и имеет размер больше чем ноль. |
* <code>-s file</code> — истина, если file существует и имеет размер больше чем ноль. |
||
* <code>-S file</code> — истина, если file существует и |
* <code>-S file</code> — истина, если file существует и . |
||
* <code>-t [fd]</code> — истина, если fd открыт на терминале. Если fd пропущен, по умолчанию 1 (стандартное устройство вывода). |
* <code>-t [fd]</code> — истина, если fd открыт на терминале. Если fd пропущен, по умолчанию 1 (стандартное устройство вывода). |
||
* <code>-u file</code> — истина, если file существует и имеет установленным бит пользователя (set-user-id). |
* <code>-u file</code> — истина, если file существует и имеет установленным бит пользователя (set-user-id). |
||
* <code>-w file</code> — истина, если file существует и |
* <code>-w file</code> — истина, если file существует и . |
||
* <code>-x file</code> — истина, если file существует и |
* <code>-x file</code> — истина, если file существует и . |
||
* <code>-O file</code> — истина, если file существует и его владелец имеет эффективный идентификатор пользователя. |
* <code>-O file</code> — истина, если file существует и его владелец имеет эффективный идентификатор пользователя. |
||
* <code>-G file</code> — истина, если file существует и его владелец имеет эффективный идентификатор группы. |
* <code>-G file</code> — истина, если file существует и его владелец имеет эффективный идентификатор группы. |
||
* <code>file1 -nt file2</code> — истина, если file1 новее (дата модификации) чем file2. |
* <code>file1 -nt file2</code> — истина, если file1 новее (дата модификации) чем file2. |
||
* <code>file1 -ot file2</code> — истина, если file1 старее чем file2. |
* <code>file1 -ot file2</code> — истина, если file1 старее чем file2. |
||
* <code>file1 -ef file2</code> — истина, если file1 и file2 имеют то же устройство и номер inode |
* <code>file1 -ef file2</code> — истина, если file1 и file2 имеют то же устройство и номер inode. |
||
* <code>-z string</code> — истина, если длина string равна нулю. |
* <code>-z string</code> — истина, если длина string равна нулю. |
||
* <code>-n |
* <code>-n string</code> — истина, если длина string не ноль. |
||
* <code>string1 = string2</code> — истина, если строки равны. |
* <code>string1 = string2</code> — истина, если строки равны. |
||
* <code>string1 != string2</code> — истина, если строки не равны. |
* <code>string1 != string2</code> — истина, если строки не равны. |
||
* <code>! expr</code> — истина, если выражение expr ложь. |
* <code>! expr</code> — истина, если выражение expr ложь. |
||
* <code>expr1 -a expr2</code> — истина, если оба выражения expr1 и expr2 истина. |
* <code>expr1 -a expr2</code> — истина, если оба выражения expr1 и expr2 истина. |
||
* <code>expr1 -o expr2</code> — истина, если |
* <code>expr1 -o expr2</code> — истина, если expr1 или expr2 истина. |
||
* <code>arg1 |
* <code>arg1 arg2 -eq, -ne, -lt, -le, -gt, или -ge</code> — эти арифметические бинарные операции возвращают истину, если arg1 равно, не равно, меньше чем, меньше чем или равно, больше чем, или больше или равно чем arg2, соответственно. arg1 и arg2 могут быть положительными целыми, отрицательными целыми, или специальными выражениями -l string, которые вычисляют длину string. |
||
== Примечания == |
|||
{{примечания}} |
|||
== Ссылки == |
== Ссылки == |
||
Строка 66: | Строка 71: | ||
* {{man|1|test|FreeBSD}} |
* {{man|1|test|FreeBSD}} |
||
{{ |
{{Команды Unix}} |
||
[[Категория:Утилиты UNIX]] |
|||
[[ |
[[: Unix]] |
||
[[fr:Test (Unix)]] |
|||
[[hu:Test (Unix)]] |
|||
[[pl:Test (Unix)]] |
|||
[[uk:Test]] |
Текущая версия от 18:50, 14 марта 2024
test — UNIX-утилита для проверки типа файла и сравнения значений. Возвращает код возврата 0 (ложь) или 1 (истина) в зависимости вычисления выражения expr
. Выражения могут быть как унарными, так и бинарными. Унарные выражения часто используются для проверки статуса файла. Также допустимо сравнение чисел и строк.
Начиная с UNIX System III утилита стала встроенной, также появилась вторая её форма - [.[1]
Использование
[править | править код]test [expr]
test {--help,--version}
Обычно используется в несложных shell-скриптах для проверок разного рода. Следующий пример удалит обычный файл test.txt, если он существует, либо выведет сообщение, что данного файла нет.
#!/bin/sh
if test -f test.txt
then
rm test.txt
else
echo 'файл test.txt не найден'
fi
Для сокращения кода сценария используют парный оператор '[' как синоним test. Парный оператор требует пробела между скобками потому, что [ (скобка) является командой оболочки, а POSIX совместимые оболочки требует пробела между командой и её аргументами.
#!/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 не ноль.string1 = string2
— истина, если строки равны.string1 != string2
— истина, если строки не равны.! expr
— истина, если выражение expr ложь.expr1 -a expr2
— истина, если оба выражения expr1 и expr2 истина.expr1 -o expr2
— истина, если хотя бы одно из выражений expr1 или expr2 истина.arg1 %оператор% arg2 -eq, -ne, -lt, -le, -gt, или -ge
— эти арифметические бинарные операции возвращают истину, если arg1 равно (-eq), не равно (-ne), меньше чем (-lt), меньше чем или равно (-le), больше чем (-gt), или больше или равно (-ge), чем arg2, соответственно. arg1 и arg2 могут быть положительными целыми, отрицательными целыми, или специальными выражениями -l string, которые вычисляют длину string.
Примечания
[править | править код]- ↑ traditional Bourne shell family / history and development . www.in-ulm.de. Дата обращения: 15 июля 2017. Архивировано 14 апреля 2020 года.