Как проверить первый символ в строке в unix
Я пишу script в unix, где мне нужно проверить, является ли первый символ в строке "/", и если это так, ветвь.
например, у меня есть строка
/some/directory/file
Я хочу, чтобы это возвращалось 1
и
[email protected]:/some/directory/file
для возврата 0
как я могу это сделать?
Ответы
Ответ 1
Много способов сделать это. Вы можете использовать подстановочные знаки в двойных скобках:
str="/some/directory/file"
if [[ $str == /* ]]; then echo 1; else echo 0; fi
Вы можете использовать расширение подстроки:
if [[ ${str:0:1} == "/" ]] ; then echo 1; else echo 0; fi
Или регулярное выражение:
if [[ $str =~ ^/ ]]; then echo 1; else echo 0; fi
Ответ 2
Рассмотрим также оператор case, который совместим с большинством оболочек sh:
case "$STRING" in
/*)
echo 1
;;
*)
echo 0
;;
esac
Ответ 3
$ foo="/some/directory/file"
$ [ ${foo:0:1} == "/" ] && echo 1 || echo 0
1
$ foo="[email protected]:/some/directory/file"
$ [ ${foo:0:1} == "/" ] && echo 1 || echo 0
0