Вопросы с тегом «test»

Это касается утилиты Unix «test», также вызываемой как «[», или ее варианта синтаксиса оболочки [[…]]. Для вопросов о тестировании программного обеспечения и настроек используйте тег «testing».

248
В чем разница между операторами Bash [[vs [vs (vs ((?)

Я немного запутался в том, что эти операторы делают по-разному при использовании в bash (скобки, двойные скобки, круглые скобки и двойные скобки). [[ , [ , ( , (( Я видел, как люди используют их, если такие заявления: if [[condition]] if [condition] if ((condition)) if (condition)...

86
Почему расширение параметров с пробелами без кавычек работает в двойных скобках «[[», но не в одинарных скобках «[»?

Я запутался с использованием одинарных или двойных скобок. Посмотрите на этот код: dir="/home/mazimi/VirtualBox VMs" if [[ -d ${dir} ]]; then echo "yep" fi Это работает отлично, хотя строка содержит пробел. Но когда я изменяю это на одну скобку: dir="/home/mazimi/VirtualBox VMs" if [ -d ${dir} ];...

70
Как проверить, существует ли переменная в операторе if?

Мне нужно проверить существование переменной в ifзаявлении. Что-то с эффектом: if [ -v $somevar ] then echo "Variable somevar exists!" else echo "Variable somevar does not exist!" И самый близкий вопрос к этому был этим , который фактически не отвечает на мой...

64
Как проверить, является ли файл символической ссылкой на каталог?

Я могу проверить, существует ли файл и является ли он символической ссылкой с -L for file in *; do if [[ -L "$file" ]]; then echo "$file is a symlink"; else echo "$file is not a symlink"; fi done и если это каталог с -d: for file in *; do if [[ -d "$file" ]]; then echo "$file is a directory"; else...

50
Как именно работает «/ bin / [»?

Я всегда удивляюсь, что в папке /binесть [программа. Это то , что называется , когда мы делаем что - то вроде: if [ something ]? Вызывая [программу явно в оболочке, она запрашивает соответствующую ], а когда я предоставляю закрывающую скобку, она, кажется, ничего не делает, независимо от того, что...

44
Является ли тест или [или [[более переносимым как между оболочками Bash, так и между другими оболочками?

Я вижу, я могу сделать $ [ -w /home/durrantm ] && echo "writable" writable или $ test -w /home/durrantm && echo "writable" writable или $ [[ -w /home/durrantm ]] && echo "writable" writable Мне нравится использовать третий синтаксис. Они эквивалентны во всех отношениях и для...

41
Тест Bash: что делает «= ~»?

#!/bin/bash INT=-5 if [[ "$INT" =~ ^-?[0-9]+$ ]]; then echo "INT is an integer." else echo "INT is not an integer." >&2 exit 1 fi Что делает ведущий ~в начальном регулярном

31
Проверка, является ли входной номер целым числом

Я пытаюсь проверить, является ли ввод целым числом, и я прошел через него сто раз, но не вижу ошибки в этом. Увы, он не работает, он запускает оператор if для всех входных данных (цифры / буквы) read scale if ! [[ "$scale" =~ "^[0-9]+$" ]] then echo "Sorry integers only" fi Я играл с цитатами, но...

29
Проверьте, существуют ли файлы, соответствующие шаблону, чтобы выполнить скрипт

Я пытаюсь написать ifзаявление, чтобы проверить, есть ли какие-либо файлы, соответствующие определенному шаблону. Если в каталоге есть текстовый файл, он должен запустить данный скрипт. Мой код в настоящее время: if [ -f /*.txt ]; then ./script fi Пожалуйста, дайте несколько идей; Я хочу запустить...

27
Ошибка в тесте скобки оболочки, когда строка является левой скобкой

Раньше я был уверен в том, что цитирование строк - это всегда хорошая практика, чтобы избежать его разбора оболочкой. Потом я наткнулся на это: $ x='(' $ [ "$x" = '1' -a "$y" = '1' ] bash: [: `)' expected, found 1 Попытка изолировать проблему, получая ту же ошибку: $ [ '(' = '1' -a '1' = '1' ]...

27
Тестирование, если переменная пуста в сценарии оболочки

Я видел следующую технику, которую много раз использовали на разных оболочках, чтобы проверить, является ли переменная пустой: if [ "x$1" = "x" ]; then # Variable is empty fi Есть ли какие-либо преимущества в использовании этого по сравнению с более каноническим if [ -z "$1" ]? Может ли это быть...

25
Как я могу использовать bash's if test и находить команды вместе?

У меня есть каталог с журналами сбоев, и я хотел бы использовать условный оператор в скрипте bash на основе команды find. Файлы журнала хранятся в следующем формате: /var/log/crashes/app-2012-08-28.log /var/log/crashes/otherapp-2012-08-28.log Я хочу, чтобы оператор if возвращал значение true только...

24
Начиная с аргументов bash: -lt и -gt

Я начинаю с bash и обнаружил следующее: if test $first -lt $second then echo $first is lower than $second else if test $first -gt $second then echo $first is higher than $second else echo $first and $second are equals fi fi Для чтения сценария и его выполнения я знаю, что он делает, но не то, для...

23
Зачем использовать двойные кавычки в тесте [[]]?

Допустим, у нас есть 2 целых числа в скрипте bash: value1=5 value2=3 Тогда зачем нам использовать двойные кавычки в случае теста? Например: if [[ "$value1" -eq "$value2" ]] Почему бы просто не использовать следующее? if [[ $value1 -eq $value2 ]] Для меня двойные кавычки не имеют никакого...

22
Есть ли существенная разница при сравнении переменной в виде строки или целого числа?

Из любопытства, при выполнении сравнения переменных bash (его значение является integer) можно проверить его по некоторому предопределенному значению, объявленному как intили как string. Пример скрипта : #!/bin/bash f1() { [ "$1" == "1" ] && echo "$FUNCNAME: \"1\" compared as string" } f2()...

22
Сравнивая две строки в Bash

У меня есть следующий ifблок в моем скрипте bash: if [ ${PACKAGENAME} -eq kakadu-v6_4-00902C ]; then echo "successfully entered if block!!" fi Выполнение скрипта не входит в мой ifблок, хотя $PACKAGENAMEоно равно kakadu-v6_4-00902C. Что я делаю не...