linux - BASH:可以在命令行上进行 grep,但不能在脚本中进行

标签 linux bash grep

这已经做了一百万次了,但是这次没用 我尝试从文件中 grep "$TITLE"。在命令行上它正在工作,“$TITLE”变量不为空,但是当我运行脚本时它什么也找不到

*标题包含一个以上的词

echo "$TITLE"
cat PAGE.$TEMP.2 | grep "$TITLE"

我尝试过的:

echo "cat PAGE.$TEMP.2 | grep $TITLE"

查看标题是否不为空以及文件名是否确实存在

最佳答案

你确定$TITLE没有不在文件中的前导或尾随空格?您对字符串的修复会在执行前去除空格,因此它不会看到它。

例如,对于包含“第一行”的文件:

/home/user1> TITLE=' one '
/home/user1> grep "$TITLE" text.txt
/home/user1> cat text.txt | grep $TITLE
Line one

尝试 echo "<$TITLE>" , 或 echo "$TITLE"|od -xc这将使您能够发现错误的字符。

关于linux - BASH:可以在命令行上进行 grep,但不能在脚本中进行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12297774/

相关文章:

linux - SSH多台主机以检查连接性

regex - 在 bash 中查找与多个模式匹配的文件

hadoop - 尝试查找文件中具有匹配字符串的所有行,然后将结果保存到Hadoop HDFS中单独目录中的文件中

arrays - Perl中 'one dimensional'散列对数组的优势

linux - 如何在 Linux Shell 中显示出现在连续行中的日期差异?

linux - 简化语义版本控制脚本

c - 如何实现 timespec 累加器?

linux - epoll() 是否在 O(1) 中完成工作?

linux - i3blocks (i3wm) - 使用 sudo 命令

bash 参数用换行符替换