Я пишу сценарий оболочки, где пользователь может написать регулярное выражение в качестве аргумента.Это регулярное выражение записывается в файл.Это " исключить файл " позже используется rsync для исключения всех файлов и каталогов в / etc из резервной копии, сопоставленной с шаблоном в этом файле.
Теперь мне нужен способ проверить, соответствует ли заданный пользователем аргумент тому же набору файлов, что и один из шаблонов, уже указанных в « исключить файл ».
Вот код, который я написал до сих пор:
while read line
do
if [ "/$e" == "$line" ]
then
exit 1
elif [[ "${e:4}" == "$line" ]]
then
exit 1
else
echo "$line"|grep "$e"
if [ $? -eq 0 ]
then
exit 1
fi
if [[ "${e:0:4}" == "/etc" ]]
then
echo "$line"|grep "\'${e:4}\'"
if [ $? -eq 0 ]
then
exit 1
fi
fi
fi
done < <(cat $EXCLUDEFILE)
Это, однако, некрасиво и даже не работает, как ожидалось.Кто-нибудь знает, как выполнить эту задачу более элегантно?