Если условие вопроса в оболочке
-
06-07-2019 - |
Вопрос
Я пытаюсь определить, содержит ли строка тире, но у меня ничего не получается (я новичок в оболочке).
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 " знак равно затем эхо "это тире"; еще эхо "не имеет тире"; ц р>
Не связан с StackOverflow