Почему этот простой bash-код дает синтаксическую ошибку? - PullRequest
4 голосов
/ 15 июня 2010

У меня есть следующий код bash, который скопирован и вставлен из "bash cookbook" (1-е издание):

#!/bin/bash

VERBOSE=0;
if [[ $1 =-v ]]
then
    VERBOSE=1;
    shift;
fi

Когда я запускаю это (bash 4.0.33), я получаю следующий синтаксисошибка:

./test.sh: line 4: conditional binary operator expected
./test.sh: line 4: syntax error near `=-v'
./test.sh: line 4: `if [[ $1 =-v ]]'

Это так же просто, как опечатка в bash cookbook, или есть несовместимость версий или что-то еще здесь?Каким будет наиболее очевидное исправление?Я пробовал разные комбинации смены оператора, но я не очень разбираюсь в скриптах bash.

1 Ответ

11 голосов
/ 15 июня 2010

Bash использует пробелы для токенизации скриптов. Линия:

if [[ $1 =-v ]]

должно быть:

if [[ $1 = -v ]]
...