Если условие вопроса в оболочке - PullRequest
1 голос
/ 29 ноября 2009

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

if [ "$m" -eq "-" ]
then
echo "has dash"
else
echo "has no dash"
fi

Ответы [ 3 ]

4 голосов
/ 29 ноября 2009

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

if [ "$m" = - ]

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

2 голосов
/ 29 ноября 2009
if [ "x$m" = "x-" ]; then
    echo "is a dash"
else
    echo "is not a dash"
fi

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

1 голос
/ 29 ноября 2009

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

if test "$ m" = '-'; затем эхо "это тире"; еще эхо "не имеет тире"; фи

...