当我在TEST(第18行)中使用grep时,它完美地工作。当我执行完全相同的命令时,但在for循环(第40行)内,它不起作用。为什么?现在我已经把这个问题放在头脑上了。Linux shell脚本:grep不能在for循环中工作
#!/bin/bash
clear
sourcelist=`ls *.c`
headerlist=`ls *.h`
FILE="headers.txt"
TEST="receive_elevator_data" #this is one typical entry in headers.tex
echo "TEST"
grep $TEST *.c -n
MODE="h"
if [ "$MODE" = "h" ]
then
echo "Searching.."
#for entry in $(cut -f 1 $FILE)
for entry in `cat $FILE`
do
echo "Looking at entry in $FILE: "
echo $entry
echo "Press any button to search, for skip, to exit"
read -e INPUT2
if [ "$INPUT2" = "s" ]
then
continue
fi
if [ "$INPUT2" = "n" ]
then
exit 1 #exit shell script
else
grep -n "${entry}" ${sourcelist}
fi
done
fi
只是为了阐明:headers.txt中的每一行都有“test”这样的字符串,即行中没有空格。什么headers.txt真正包含的是从C项目中的所有头文件中提取的函数名称列表:)在我以前的代码中没有返回的错误,它只是在循环中不会运行的grep命令。我想要做的是在headers.txt中搜索每个函数的所有C文件,并在每次搜索前提示我
2012-04-21
Lars
+0
'的sed 's/^/\ t /' 脚本| xclip',你准备粘贴;) –
2012-04-21 23:02:13
+0
选择代码并点击小花括号? –
2012-04-21 23:03:39
+0
还有什么是返回的错误?你应该包含这些信息。 –
2012-04-21 23:20:23