Как я могу проверить, совпадают ли два регулярных выражения с одним и тем же набором существующих файлов? - PullRequest
0 голосов
/ 03 марта 2012

Я пишу сценарий оболочки, где пользователь может написать регулярное выражение в качестве аргумента.Это регулярное выражение записывается в файл.Это " исключить файл " позже используется 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)

Это, однако, некрасиво и даже не работает, как ожидалось.Кто-нибудь знает, как выполнить эту задачу более элегантно?

...