我正在尝试纠正一个 bash 脚本来对我公司使用的 CMS 进行多次检查和搜索。我试图为用户实现一个函数,以便能够搜索某个宏调用,并且该函数返回包含该调用的所有文件、调用宏的行以及宏调用中的实际代码。我所拥有的似乎被我使用 for 循环格式化输出的事实搞砸了。这是我正在处理的脚本片段:
elif [ "$choice" = "2" ]
then
echo -e "\n What macro call are we looking for $name?"
read macrocall
for i in $(grep -inR "$macrocall" $sitepath/templates/macros/); do
file=$(echo $i | cut -d\: -f1 | awk -F\/ '{ print $NF }')
line=$(echo $i | cut -d\: -f2)
calltext=$(echo $i | cut -d\: -f3-)
echo -e "\nFile: $file"
echo -e "\nLine: $line"
echo -e "\nMacro Call from file: $calltext"
done
fi
当前脚本运行前几个字段,直到它获得一个空格,然后一切都变得混乱。任何人都知道如何让 for 循环分隔符成为 grep 的每个结果?任何的意见都将会有帮助。如果你们中的任何人需要更多信息,请告诉我。谢谢!