「grep」コマンドを使用して、文字列にスラッシュが含まれているかどうかを確認したい。最初は簡単で、次のスクリプトを書きました。
foo=someone/books
if [ `echo "$foo" | grep '/'` ]
then
echo "has forward slash"
fi
ただし、変数「foo」を次の文字列に設定すると、問題は隅にあります。
foo="someone/books in stack"
変数fooに「スペース」があるため、上記のスクリプトは失敗します。コマンドを展開すると、ifステートメントの条件は次のようになります。
grep '/' someone/books in stack
「スペース」のため、上記の「grep」コマンドには、不正な引数が多すぎます。参考までに、caseステートメントを使用してこの問題を解決しようとしています。
case $foo in
*/*)
echo "has forward slash"
;;
*)
;;
esac
ただし、caseステートメントは冗長なので、使用したくありません。では、grepコマンドなどを使用してこの問題をどのように解決できますか?