当我在 TEST(第 18 行)中使用 grep 时,它可以完美运行。当我执行完全相同的命令,但在 for 循环内(第 40 行)时,它不起作用。为什么?我已经在这个问题上绞尽脑汁太久了。
#!/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, <s> for skip, <e> 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文件,并在每次搜索前提示我