已经有这么多次,但这次它没有用 我尝试从文件中获取“$ TITLE”。在命令行上它正在工作,“$ TITLE”变量不为空,但是当我运行脚本时它什么都没找到
*标题包含多个单词
echo "$TITLE"
cat PAGE.$TEMP.2 | grep "$TITLE"
我尝试了什么:
echo "cat PAGE.$TEMP.2 | grep $TITLE"
查看标题是否为空,文件名实际上是
答案 0 :(得分:3)
您确定$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
,这样可以让您发现错误的字符。
答案 1 :(得分:0)
适合我:
~> cat test.dat
abc
cda
xyz
~> export GRP=cda
~> cat test.dat | grep $GRP
cda
编辑:
使用grep
的正确方法是:
~> grep $GRP test.dat
答案 2 :(得分:0)
此命令
echo "cat PAGE.$TEMP.2 | grep $TITLE"
回显一个以'cat'开头的字符串。它不运行命令。你想要
echo "$( cat PAGE.$TEMP.2 | grep $TITLE )"
尽管功能与简单的
相同cat PAGE.$TEMP.2 | grep $TITLE
正如其他人所指出的,不需要使用cat
来管道单个文件; grep
可以正常读取文件:
grep "$TITLE" "PAGE.$TEMP.2"
(您的默认行为应该是引用参数扩展,除非您可以证明它不正确。)