文字列に "a b" c "d"のような文字列があると、文字列に含まれる単一引用符と空白があることを確認するにはどうすればいいですか?bashシェルに文字列にスペースが含まれているかどうかをチェックする方法
答えて
方法に類似のアプローチについて:
$ A="some string"; echo $A | grep \ | wc -l
1
$ A="somestring"; echo $A | grep \ | wc -l
0
?ビット醜い
S="a b '' c '' d"
if echo $S | grep -E '[ "]' >/dev/null
then
echo "It's a match"
fi
...、しかし、どこでも動作することが保証:
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
あなたはbashで正規表現を使用することができます。
string="a b '' c '' d"
if [[ "$string" =~ \ |\' ]] # slightly more readable: if [[ "$string" =~ (|\') ]]
then
echo "Matches"
else
echo "No matches"
fi
編集:上記の明白な理由のために
、それが変数に正規表現を入れた方が良いでしょう:
pattern=" |'"
if [[ $string =~ $pattern ]]
そして、二重大括弧の中に引用符を入れる必要はありません。それらは右で使用することはできませんまたは正規表現はリテラル文字列に変更されます。
私にとっても一番きれいなIMOですが、タブを追加しましたが、ドル記号を投げなければならないので、ちょっとファンキーに見えるのですが、パターン= "| '" $' | \ t " – nhed
@nhed:1文字の場合は、パイプ文字の代わりに文字パターンを使用できます。やや醜いかもしれません: 'pattern = $ '[\' \ t] ''。変数を使うこともできます: 'tab = $ '\ t'; 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"
好奇心を持っている人のために、タブや改行を検出しないことに注意してください。 –
誰も言及していない、なぜかしらん[:スペース:]セットを。通常、あなたはスペース文字を検出することに興味がありません。私は、しばしば空白を検出する必要があります。タブ。 "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'は'文字クラスの構文は[:space:]] ] '。それ以外の場合は、優れたソリューション! – jdferreira
質問には "bash"というタグが付いているので、文字列をテストするために別のプロセスを起動する必要はありません: 'case" $ String "in * [[:space:]] *)echo" match ";;エサック –
- 1. 文字列が別の文字列リストに含まれているかどうかをチェックする方法は?
- 2. 文字列に文字が含まれているかどうかをチェックする方法は?
- 3. TextViewに配列の文字列が含まれているかどうかをチェックする方法は?
- 4. テキストボックスに文字列が含まれているかどうかをチェック
- 5. 文字列に計算が含まれているかどうかをチェック
- 6. 文字列に改行が含まれているかどうかをチェック
- 7. 文字列に日付が含まれているかどうかをチェック
- 8. 文字列に列に文字列が含まれているかどうかを確認する方法MySQL
- 9. Jenkinsの実行シェル内に文字列に特定の文字が含まれているかどうかをチェックする方法は?
- 10. 複数行TextBoxに文字列が含まれているかどうかをチェックする方法は?
- 11. 文字列がNSArrayエントリに含まれているかどうかをチェックする方法は?
- 12. リストに文字列が含まれているかどうかをチェックする方法
- 13. 配列項目にbashの6桁が含まれているかどうかをチェックする方法
- 14. チェックする方法文字列の配列には特定の文字列が含まれていますか?
- 15. 文字列にJavaScriptの文字列配列の部分文字列が含まれているかどうかをチェックする方法
- 16. varにUnicode文字が含まれているかどうかをチェックしてemojisに変換する方法
- 17. 文字列にawkの部分文字列が含まれているかどうかを調べる方法
- 18. List/ArrayListに文字列の文字が含まれているかどうかチェックするJava
- 19. 文字列に別の文字列の文字が含まれているかどうかをチェックする方法は?
- 20. Python文字列に絵文字が含まれているかどうかを調べる方法は?
- 21. チェックする方法文字列にサブストリングが含まれていれば?
- 22. 文字列にすべての数字が含まれているかどうかを調べる方法
- 23. オブジェクトの配列に指定された文字列が含まれているかどうかをチェック
- 24. 文字列に文字列が含まれているかどうかを確認してキャンセルしますか?
- 25. 文字列が整数かどうかをチェックする方法
- 26. bash - 文字列に改行が含まれているかどうかを確認する
- 27. 文字列に非ローマ字が含まれているかどうかを確認する方法
- 28. 文字列に数字記号が含まれているかどうかを確認する方法
- 29. 文字列にスペースが含まれているとバッチクローズしますか?
- 30. ビジュアルプロローグ:編集コントロール:文字列に数字が含まれているかどうかをチェック
なぜこれをやりたいのですか?たとえば、「無効な」ファイル名をチェックしようとしている場合は、スペースや引用符でファイル名をサポートするようにスクリプトを修正することができます。例えば。 –
あなたは、次のことを知りたいと言っていますか?a)スペースの周りに一重/二重引用符があります。b)スペースと共に一重引用符と二重引用符があります。 – ezpz
文字列に一重引用符が含まれているかどうかをチェックし、空白がある場合は – derrdji