会社で使用している CMS の複数のチェックと検索を実行する bash スクリプトを修正しようとしています。ユーザーが特定のマクロ呼び出しを検索できるようにする関数を実装しようとしています。関数は、呼び出しを含むすべてのファイル、マクロが呼び出された行、およびマクロ呼び出しの実際のコードを返します。出力をフォーマットするために 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 の各結果にする方法を知っている人はいますか? どんな提案も役に立ちます。さらに情報が必要な場合はお知らせください。ありがとう!