0

我有一个 shell 脚本,允许用户添加和/或删除文件和目录。这是一个文件操纵器。该脚本跟踪日志文件中添加或删除的所有文件。然后,我逐行读取日志文件并将文件放在 3 个文件之一中:dev_deleted.txt、dev_duplicates.txt 或 dev_final.txt。

  • 如果用户将相同的文件添加到目录两次(重复),则文件或目录应列在 dev_duplicates.txt 文件中。
  • 任何被删除的文件/目录都应该在 dev_deleted.txt 中列出
  • 所有其他文件应列在 dev_final.txt 中,包括文件名、第一个和最后一个字符以及文件的长度

  • 正如您在下面的代码中所看到的,我阅读了日志文件中的每一行以搜索正确的后缀,删除后缀,并在 dev_deleted.txt、dev_duplicates.txt 或 dev_final.txt 中列出

dev_deleted.txt 可以正常工作,但 dev_duplicates.txt 和 dev_final.txt 没有列出正确的文件。我在我的 Mac 上运行没有问题,但现在我尝试在 Windows 10 操作系统上运行(我将 EOL 转换为 UNIX),最后一个案例给我带来了问题。有人可以帮忙吗?

我试过搜索语法错误

 6)
      echo "List filesystem directory artifacts"
      touch $basedir/dev_final.txt $basedir/dev_deleted.txt $basedir/dev_duplicates.txt
      while IFS= read -r line
      do

          #echo "$line"
          if [[ $line == *"-removed" ]]; then
              fileName=${line%-*}
              echo "$fileName" >> $basedir/dev_deleted.txt

          elif [[ $line == *"-new" ]]; then
               fileName=${line%-*}
               echo "$fileName" >> $basedir/dev_duplicates.txt
          else
               fileName=${line}
               first=${fileName:0:1}
               nameLength=${#fileName}
               last=${fileName:$nameLength-1}
               echo "$fileName, first char:$first, last char:$last, length:$nameLength" >> $basedir/dev_final.txt
          fi
      done < "$logFile"
      ;;
    esac
done

带有 -new 后缀的文件应在 dev_duplicates.txt 中列出,带有 -removed 后缀的文件应在 dev_deleted.txt 中列出,所有其他文件(未删除或重复)应在 dev_final.txt 中列出,包括文件名,第一个和最后一个字符,以及文件的长度

4

0 回答 0