在bash脚本中转义空格

时间:2016-08-30 03:26:01

标签: bash

每当我迭代的目录中的文件包含使用grep的字符串时,我都会尝试在bash脚本中执行某些操作。问题在于目录中的文件子集在名称中包含空格。因此,我尝试使用sed替换具有转义空格的空格:

if grep -c "main" ${source} | sed 's/ /\\ /g'; then
  # do something
fi

但是,我仍然收到错误:

  

grep:/ Users / me / Desktop / theDir / nameWith:没有这样的文件或目录

     

grep:spaces.txt:没有这样的文件或目录

我做错了什么?

1 个答案:

答案 0 :(得分:4)

您应该引用grep' ed文件的名称:

if grep -c main "$source" ; then
  # do something
fi

...假设$source是文件的名称。如果$source是目录的名称,我将需要有关您尝试执行的操作的更多信息。