读取文件行后,bash文件不能使用cat字符串
我有一个列表文件,每行的格式类似于“0,[0-9]”。我在bash文件中编写以下代码:读取文件行后,bash文件不能使用cat字符串,bash,Bash,我有一个列表文件,每行的格式类似于“0,[0-9]”。我在bash文件中编写以下代码: while read line do grep $line Search.txt done < list.txt 我只有 Search.txt 并且$line变为空。 bash或使用while读取文件有什么问题?我希望我正确地阅读了您的问题,后一个块(使用$line)是在第一个块之后运行的(使用while循环),如果是这样,则会发生以下情况: while运行,直到读取“失败”,即最有可能达到
while read line
do
grep $line Search.txt
done < list.txt
我只有
Search.txt
并且$line变为空。
bash或使用while读取文件有什么问题?我希望我正确地阅读了您的问题,后一个块(使用
$line
)是在第一个块之后运行的(使用while
循环),如果是这样,则会发生以下情况:
while
运行,直到读取
“失败”,即最有可能达到EOF。但最后的read
调用仍然发生,并且“nothing”头被读入行。见下文
您可以在循环中保存此值,例如:
while read line; do
grep $line Search.txt
last=line
done < list.txt
还有一个脚本example.sh
(基本上是一个展开的循环,因为我们知道传递的次数):
在运行/example.sh
时产生:
$ ./example.sh < f
0: "aaa"
0: "bbb"
1: ""
$。/example.sh
旁注:在最后一次(read
)调用之后,通过while
循环。变量实际上已设置,但分配了一个空字符串(“
)值。不要将命令放入变量中。听起来您可以使用grep-f list.txt Search.txt
而不是循环。文件是否包含空行?我正是想通过读取bash格式的文件来实现grep-f。我没有空行。当在$line之后添加其他字符串(例如grep$line Search.txt)时,我在终端中打印$line时遇到问题
aaa
bbb
#!/bin/bash
read line
echo ${?}: \"$line\"
read line
echo ${?}: \"$line\"
read line
echo ${?}: \"$line\"
$ ./example.sh < f
0: "aaa"
0: "bbb"
1: ""