сказать, что строка может быть похожа на «a», «c», «d», как я могу проверить, что есть одна/двойная кавычка и пробел, содержащиеся в строке?Как проверить, имеет ли строка пробелы в оболочке bash
ответ
Как насчет подхода, аналогичного:
$ A="some string"; echo $A | grep \ | wc -l
1
$ A="somestring"; echo $A | grep \ | wc -l
0
?
string="a b '' c '' d"
if [ "$string" == "${string//[\' ]/}" ]
then
echo did not contain space or single quote
else
echo did contain space or single quote
fi
Портативный способ сделать это с grep
:
S="a b '' c '' d"
if echo $S | grep -E '[ "]' >/dev/null
then
echo "It's a match"
fi
... немного некрасиво, но гарантированно работать везде.
С опцией '-q' в grep' '/ dev/null' больше не требуется. Немного приятнее. – Ray
Вы можете использовать регулярные выражения в Баш:
string="a b '' c '' d"
if [[ "$string" =~ \ |\' ]] # slightly more readable: if [[ "$string" =~ (|\') ]]
then
echo "Matches"
else
echo "No matches"
fi
Edit:
По причинам, очевидным выше, то лучше поставить регулярное выражение в переменной:
pattern=" |'"
if [[ $string =~ $pattern ]]
И цитаты не нужны внутри двойных квадратных скобок. Они не могут использоваться справа или регулярное выражение изменено на буквенную строку.
чистейший один IMO, для меня я также добавил вкладку, но выглядит немного напуганным, поскольку мне пришлось бросить долларовую цитату там 'pattern = '|' '$' | \ t'' - есть ли более чистый способ? – nhed
@nhed: В случае одиночных символов вы можете использовать шаблон символа вместо чередования символов канала. Это может быть немного менее уродливым: 'pattern = $ '[\' \ t] ''. Вы также можете использовать переменную: 'tab = $ '\ t'; pattern = "| '| $ tab" 'или литеральная вкладка (что плохо для чтения), набрав ее с помощью Ctrl-V-Tab. –
function foo() {
echo "String: $*"
SPACES=$(($#-1))
echo "Spaces: $SPACES"
QUOTES=0
for i in $*; do
if [ "$i" == "'" ]; then
QUOTES=$((QUOTES+1))
fi
done
echo "Quotes: $QUOTES"
echo
}
S="string with spaces"
foo $S
S="single' 'quotes"
foo $S
S="single '' quotes"
foo $S
S="single ' ' quotes"
foo $S
выходы:
String: string with spaces
Spaces: 2
Quotes: 0
String: single' 'quotes
Spaces: 1
Quotes: 0
String: single '' quotes
Spaces: 2
Quotes: 0
String: single ' ' quotes
Spaces: 3
Quotes: 2
[[ "$str" = "${str%[[:space:]]*}" ]] && echo "no spaces" || echo "has spaces"
Обратите внимание, что это не обнаруживает табуляции или символы новой строки, для тех, кто интересуется –
Я удивляюсь, почему никто не упомянул [: пространство:] установлено. Обычно вы не только заинтересованы в обнаружении космического персонажа. Мне часто приходится обнаруживать любое пустое пространство, например. TAB. Пример «grep» будет выглядеть так:
$ echo " " | egrep -q "[:space:]" && echo "Has no Whitespace" || echo "Has Whitespace"
Has Whitespace
$ echo "a" | egrep -q "[:space:]" && echo "Has no Whitespace" || echo "Has Whitespace"
Has no Whitespace
Для тех, кто интересуется этим решением, мой 'grep' сообщает мне, что синтаксис символьного класса [[: пробел:]], а не [: пробел: ] '. В противном случае, отличное решение! – jdferreira
Поскольку вопрос помечен как «bash», нет необходимости запускать другой процесс, чтобы проверить строку: 'case '$ String" in * [[: space:]] *) echo "match" ;; esac' –
- 1. Как проверить, имеет ли строка последовательные пробелы
- 2. Regex проверить, имеет ли строка только пробелы
- 3. Как проверить, имеет ли строка только пробелы в Javascript?
- 4. Как проверить, имеет ли строка последовательные пробелы 3
- 5. Как проверить, имеет ли массив чисел пробелы?
- 6. Bash проверить, существует ли строка как переменная
- 7. bash: как проверить, начинается ли строка с '#'?
- 8. Проверьте, имеет ли строка как пробелы, так и специальные символы.
- 9. Как проверить, имеет ли строка нечетное число?
- 10. Как обрабатывать пробелы в оболочке?
- 11. Как проверить, имеет ли строка символ абзаца?
- 12. Как проверить, имеет ли строка $ _GET ["s"] ++++?
- 13. bash проверить, содержит ли строка пробел
- 14. Bash проверить, соответствует ли строка grep строке
- 15. Удалить пробелы запятой в строке в оболочке bash
- 16. Как проверить, содержит ли моя строка пробелы с помощью preg_match?
- 17. Как проверить, содержит ли строка ни ничего, ни просто пробелы?
- 18. проверить, имеет ли строка только определенные слова
- 19. C# проверить, имеет ли строка определенное слово
- 20. Как проверить, включена ли строка в результаты для команды bash?
- 21. Как проверить, существует ли строка в файле с оболочкой Bash?
- 22. `functions` в оболочке bash
- 23. вызов переменной bash, которая имеет пробелы
- 24. Определить, содержит ли строка какие-либо пробелы
- 25. bash проверить, если строка имеет символ более одного раза
- 26. Как проверить, имеет ли строка три слова в строке?
- 27. Как проверить, имеет ли строка конкретный символ в выражении if?
- 28. Как проверить, имеет ли строка одну из строк в списке?
- 29. Как проверить, имеет ли строка JSON значение в JavaScript?
- 30. Поиск строки, когда строка поиска имеет пробелы
Зачем вы хотите это сделать? Если вы пытаетесь, скажем, проверить «недопустимое» имя файла, вместо этого вы можете исправить скрипт для поддержки имен файлов с пробелами или кавычками. Например. –
Вы говорите, что хотите знать, что: a) есть одна/двойная кавычка вокруг пробела b) одна/двойная кавычка вместе с пространством c) что-то совершенно отличное от этого? – ezpz
Просто, чтобы проверить, имеет ли строка какую-либо одну цитату, и если у нее есть какое-либо пространство. – derrdji