Тест сценария оболочки

РЕДАКТИРОВАНИЕ: не используйте vc80 / Visual Studio 2005, но Visual Studio 2008 / vc90 версии библиотеки CGAL (возможно от здесь ).

Инструменты Компоновщика, Предупреждающие LNK4099:

Вы могли также скомпилировать с/Z7, таким образом, pdb не должен использоваться, или удалите опцию компоновщика ОТЛАДКИ/, если у Вас нет .pdb файлов для объектов, Вы связываетесь.

5
задан 9 September 2009 в 11:03
поделиться

3 ответа

Я думаю, что : - это обычная уловка, которую люди используют, если переменная пуста.

Если она пуста, то оболочка будет иметь это:

if [  != 0,0 ]

что было бы синтаксической ошибкой. Ввод : впереди означает, что, если переменная пуста, оболочка имеет это:

if [ : != :0,0 ]

, что не является синтаксической ошибкой и (правильно) сообщит ложь.

5
ответ дан 18 December 2019 в 09:09
поделиться

Команда [ - это просто псевдоним команды test , закрывающая квадратная скобка просто является синтаксическим сахаром (команда [ игнорирует последний аргумент, если это закрывающая скобка), поэтому строка фактически читает

if test :$RESULT != :0,0

. Сравнивается, равна ли строка : $ RESULT строке : 0,0 . Двоеточие добавляется в начале в случае, если переменная $ RESULT пуста. Строка выглядела бы следующим образом, если бы двоеточие было опущено и $ RESULT было пустой строкой:

if test  != 0,0

Это привело бы к ошибке, поскольку test ожидает аргумент перед ]! = . Альтернативой может быть использование кавычек, чтобы указать, что существует аргумент, представляющий собой пустую строку:

if test "$RESULT" != 0,0
# Will become
if test "" != 0,0

Однако опубликованный вами вариант более переносим.

12
ответ дан 18 December 2019 в 09:09
поделиться

Иногда вы увидите x , используемое в способ использования двоеточия в вашем примере.

Предпочтительный способ выполнить этот тип теста в Bash - использовать двойную квадратную скобку:

if [[ $RESULT != 0,0 ]]

Форма двойной скобки обеспечивает большую гибкость, улучшенную читаемость, снижает потребность в экранирование и цитирование и еще несколько функций. См. на этой странице для получения дополнительной информации.

Если вы хотите проверить числовые значения, а не строки или файлы, используйте двойные скобки:

if (( 3 + 4 > 6 ))
1
ответ дан 18 December 2019 в 09:09
поделиться