2013-05-31 7 views
0

Я смотрю на различиях между конфигурационными сценариями для двух версий Apache, и я заметил следующее в новой версии Configure:Что делает двоеточие в этом сценарии настройки GNU?

if [ some test ]; then : 
    do this 
else 
    do that 

против старой версии:

if [ some test ]; then 
    do this 
else 
    do that 

только разница в том, что: (двоеточие), no-op, после утверждения then.

Edit 1: Таким образом, новая версия в основном говорит:

if "this" then "do nothing" 
    "do this" 
else 
    "do that" 

Что намерение намеренно добавив, что двоеточие?

N.B. Я видел этот аналогичный вопрос What Is the Purpose of the `:' (colon) GNU Bash Builtin?, но это не касается этих конкретных сценариев.

Редактировать 2: Это видно, когда вы сравниваете скрипт configure для Apache APR в версии 2.2.17 против версии в версии 2.2.24.

Загрузите два tarballs из Apache site, и после разрыва файла конфигурации файл находится в каталоге httpd-2.2.x/srclib/apr для обоих выпусков.

Линия 26015 в версии 2.2.24 показывает эту конструкцию.

+1

Можете ли вы предоставить ссылку на то, где вы это видели? – Joni

+0

Просто добавил @Joni –

ответ

2

Двоеточие, встроенное в этом случае, делает то, что всегда делает: ничего, успешно.

Вы всегда можете написать команду после then ключевого слова, например:

if [ some test ]; then do one thing 
    do another thing 
fi 

В данном конкретном случае автор использует : в качестве первой команды, возможно, из-за типографский эффект.

Другая причина для использования : после ключевого слова then может обеспечить правильность в случае, если строки удаляются или комментируются в инструкции if. Например, это было бы незаконным синтаксисом при удалении толстой кишки:

if [ some test ]; then : 
    # do one thing  ## Disabled due to bug #12992 
fi 
+0

Спасибо Joni, но зачем обновлять скрипт, чтобы добавить это? Возможно, некоторые версии оболочки? –

+0

Это имеет смысл. Благодарю. –