Продолжая мой комментарий, POSIX-оболочка не позволяет использовать классы символов (например, [...]
) в пределах test
(синоним [...]
). Только bash [[ ... ]]
допускает классы символов внутри него.
Если у вас установлено coreutils
(примерно для каждого дистрибутива), вы все равно можете сопоставить список символов со строкой, возвращающей индекс (на основе 1) в строке первого символа в символе список. Для вашего случая вы можете использовать:
if [ $(expr index "s" "sS") -gt '0' ]; then
echo yes;
fi
Где expr index "s" "sS"
- это обычная форма index string charlist
, которая требует использования expr
перед ней.
Если вы ограничены оболочкой POSIX, вы можете использовать expr string : regex
для сопоставления с регулярным выражением.
if [ $(expr "s" : '[sS]$') -gt '0' ]; then
echo yes;
fi
( примечание: регулярное выражение должно соответствовать всему содержимому проверяемой строки)