我想使用「grep」命令查找一個字符串是否包含正斜槓。一開始很容易,我寫了下面的腳本。shell腳本grep命令
foo=someone/books
if [ `echo "$foo" | grep '/'` ]
then
echo "has forward slash"
fi
然而,問題是在角落裏,如果我設置變量「富」到下面的字符串,
foo="someone/books in stack"
以上腳本將因爲有「空間」中的變量失敗foo,當命令擴展時,if語句中的條件如下。
grep '/' someone/books in stack
由於「空間」,上面的「grep」命令有太多的參數是非法的。僅供參考,我嘗試使用case語句解決此問題:
case $foo in
*/*)
echo "has forward slash"
;;
*)
;;
esac
但是,我不想使用case語句,因爲它是冗長的。那麼我怎麼能用grep命令或其他方法解決這個問題?
實際上不存在這個問題你描述的方式 - 如果你管有空格的文字進入grep,它會工作得很好,因爲它不會像你所描述的那樣將它擴展到greps命令行。用/空格「|」再次驗證'echo「的東西grep'/''實際上工作正常 –
@Yefim Dinitz其實,我嘗試它。它不能正常工作 – eleven
那麼你必須使用我見過的最奇怪的'grep' ... –