今天在写一个shell脚本的时候,有一个操作是使用grep命令在一个文件中搜索指定内容。指定内容存放在文件中,使用一个变量去获取文件中内容,再传到grep命令中去。 这段代码如下: for target in `cat content.txt` do grep $target test.txt >>result.txt done
content.txt文本中的内容为: "域[2]" "域[3]" "域[4]"
因为使用grep时,最后要执行的命令是(grep "域[2]" test.txt),所以直接把双引号写在content.txt的文本中了。然后执行脚本,执行脚本的时候开始不对劲了,直接执行(grep "域[2]" test.txt)是能够搜索到内容的。但是在脚本中就是搜索不到内容了,于是添加了“set -x”来查看执行的命令,显示执行的命令就是(grep "域[2]" test.txt)。最后折磨了半天,发现原来是content.txt文本中的双引号的问题。改成如下后就执行成功,能够搜索到内容了。 content.txt文本中的内容为: 域[2] 域[3] 域[4] 脚本: for target in `cat content.txt` do grep "$target" test.txt >>result.txt done