2013-12-19 6 views
2

Я пытался создать условие в скрипте bash, который скажет мне, содержит ли данная строка символы, отличные от букв или дефиса.Как проверить, содержит ли строка определенный символ

т.е. это правовая строка: hello-world

и что один не является: hello-123-there

Это то, что я пытался до сих пор, но я думаю, что у меня тоже есть логическая ошибка:

if ! [[ "$1" == *-* ]] && ! [[ "$1" =~ ^[a-zA-Z]+$ ]] ; then 
     echo "the line is bad" 
     exit 
fi 

(в то время как, конечно, 1 доллар относится к строке). Хотел бы получить помощь от вас.

ответ

3

Вы можете использовать регулярные выражения черты BASH:

[[ "$str" =~ ^[a-zA-Z-]*$ ]] && echo "valid" || echo "invalid" 

ИЛИ используя Глоб:

[[ "$str" == *[^-[:alpha:]]* ]] && echo "invalid" || echo "valid" 

Что же, как:

if [[ "$str" =~ ^[a-zA-Z-]*$ ]]; then 
    echo "valid" 
else 
    echo "invalid" 
fi 
+0

спасибо, но - я не понимаю " && "и" || " usgae, вы можете написать условие? Благодарю. –

+0

проверить обновленный ответ. – anubhava

+0

Вы ищите это? – anubhava

Смежные вопросы