Вы можете посмотреть на использование System.Management (WMI). С этим вы можете запросить дерево Win32_Process.
Можно использовать ответ Marcus (* подстановочные знаки) внешняя сторона оператор выбора также при использовании двойных скобок:
string='My long string'
if [[ $string == *"My long"* ]]; then
echo "It's there!"
fi
Примечание, которое располагает с интервалами в строке иглы, должно быть помещено между двойными кавычками, и эти *
, подстановочные знаки должны быть снаружи.
Принятый ответ является лучшим, но так как существует больше чем один способ сделать это, вот другое решение:
if [ "$string" != "${string/foo/}" ]; then
echo "It's there!"
fi
${var/search/replace}
$var
с первой инстанцией search
заменены replace
, если это найдено (это не изменяется $var
). При попытке заменить foo
ничем, и строка изменилась, то, очевидно foo
был найден.
Необходимо помнить, что сценарии оболочки являются меньшим количеством языка и большим количеством набора команд. Инстинктивно Вы думаете, что этот "язык" требует, чтобы Вы следовали if
с [
или [[
. Оба из тех являются просто командами, которые возвращают статус выхода, указывающий на успешность или неуспешность (точно так же, как любая команда). По этой причине я использовал бы grep
, а не эти [
команда.
Просто сделайте:
if grep -q foo <<<"$string"; then
echo "It's there"
fi
Теперь, когда Вы думаете if
как тестирование статуса выхода команды, которая следует за ним (вместе с точкой с запятой). Для почему бы не пересмотра источника строки, Вы тестируете?
## Instead of this
filetype="$(file -b "$1")"
if grep -q "tar archive" <<<"$filetype"; then
#...
## Simply do this
if file -b "$1" | grep -q "tar archive"; then
#...
-q
опция заставляет grep не произвести что-либо, поскольку мы только хотим код возврата. <<<
заставляет оболочку развернуть следующее слово и использовать его в качестве входа к команде, короткой версии <<
здесь документ (я не уверен, стандартно ли это или bashism).
Если Вы предпочитаете подход regex:
string='My string';
if [[ $string =~ "My" ]]
then
echo "It's there!"
fi
Я не уверен в использовании, если оператор, но можно получить подобный эффект с оператором выбора:
case "$string" in
*foo*)
# Do stuff
;;
esac
grep -q
полезно с этой целью.
то же использование awk
:
string="unix-bash 2389"
character="@"
printf '%s' "$string" | awk -vc="$character" '{ if (gsub(c, "")) { print "Found" } else { print "Not Found" } }'
Вывод:
Не Найденный
string="unix-bash 2389"
character="-"
printf '%s' "$string" | awk -vc="$character" '{ if (gsub(c, "")) { print "Found" } else { print "Not Found" } }'
Вывод:
Найденный
Первоисточник: http://unstableme.blogspot.com/2008/06/bash-search-letter-in-string-awk.html
Как насчет этого:
text=" <tag>bmnmn</tag> "
if [[ "$text" =~ "<tag>" ]]; then
echo "matched"
else
echo "not matched"
fi