2013-03-14 1 views
7

Очень похоже, но не дублировать: https://stackoverflow.com/a/2172367/57883Как проверить, начинается ли строка с другого в bash?

Я в Git Bash 3.1 (по крайней мере, это то, что приходит в приглашении, когда я печатаю Баш внутри мерзавца Баш

и $ test [["DEV-0" == D*]] || echo 'fail' печатает неудачу

..

if [['DEV-0-1' == DEV* ]]; then echo "yes";[[DEV-0-1: command not found Я пытаюсь проверить, возвращает ли git branch что-то, что начинается с DEV, но я не могу применить ответ. Это потому, что все мои попытки используют строковый литерал слева вместо значения переменной ?

Я также пробовал его на ideone http://ideone.com/3IyEND

и не повезло. Было ~ 14 лет с тех пор, как я был хорошо знаком с linux.

Что мне не хватает для строки, начинается с теста в bash?

+1

Вы есть синтаксические ошибки, которые необходимо пробелы с обеих сторон [[и]] ; –

+0

'if [['DEV-0-1' == DEV *]]; затем эхо «да»; 'также говорит' [[DEV-0-1: команда не найдена – Maslow

+1

ах! 'if [['DEV-0-1' == DEV *]]; затем эхо «да»; 'похоже, работает. – Maslow

ответ

11

Вы пропустили пробел там:

if [[ 'DEV-0-1' == DEV* ]]; then echo "yes"; fi 
     ^^ 
+0

Speedy Gonzales is ... Indian =) –

+1

hehe .. Я ударил эту ошибку достаточно раз, чтобы увидеть ее сразу ;-) –

+0

спасибо! как насчет 'test ||' версии? – Maslow

6

я бы, наверное, предпочел бы сделать чек так:

s1=DEV-0-1 
s2=DEV 

if [ "${s1:0:${#s2}}" == "$s2" ]; then 
    echo "yes" 
fi