我想使用“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' ... –