Вопрос

Я пытаюсь определить, содержит ли строка тире, но у меня ничего не получается (я новичок в оболочке).

if [ "$m" -eq "-" ]
then
echo "has dash"
else
echo "has no dash"
fi
Это было полезно?

Решение

if [ "x$m" = "x-" ]; then
    echo "is a dash"
else
    echo "is not a dash"
fi

Использует сравнение строк, все цитирует и избегает возможной путаницы при переключении командной строки [ (в некоторых оболочках с не совсем Posix), если $ m начинается с -.

Другие советы

-eq используется для проверки равенства целых чисел. Чтобы проверить равенство строк, используйте вместо этого = :

if [ "$m" = - ]

Для получения дополнительной информации см. справочную страницу для test .

Оператор '-eq' выполняет арифметическое сравнение. Вместо этого вам нужно использовать оператор '='. то есть:

if test " $ m " знак равно затем     эхо "это тире"; еще     эхо "не имеет тире"; ц

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top