#!/bin/bash #******************************************************************************* # Encoder binary comparison test model # -- Compared with benchmark version using SHA-1 string # -- Test bit stream under folder openh264/res # -- SHA-1 string of benchmark version for all cases of all bit streams # under folder openh264/test/encoder_binary_comparion/SHA1Table # -- For more detail,please refer to file AboutTest. # #brief: # -- Usage: ./run_SafeDelere.sh $DeleteItermPath # eg: 1 ./run_SafeDelere.sh tempdata.info --->delete only one file # eg: 2 ./run_SafeDelere.sh ../TempDataFolder --->delete entire folder # ./run_SafeDelere.sh /opt/TempData/ABC --->delete entire folder ABC # # date: 10/06/2014 Created #******************************************************************************* #usage: runGetFileName $FilePath runGetFileName() { #parameter check! if [ ! $# -eq 1 ] then echo "usage: runGetFileName \$FilePath" return 1 fi local PathInfo=$1 local FileName="" if [[ $PathInfo =~ ^"/" ]] then FileName=` echo ${PathInfo} | awk 'BEGIN {FS="/"}; {print $NF}'` echo "${FileName}" return 0 elif [[ $PathInfo =~ ^".." ]] then FileName=` echo ${PathInfo} | awk 'BEGIN {FS="/"}; {print $NF}'` echo "${FileName}" return 0 else FileName=${PathInfo} echo "${FileName}" return 0 fi } #****************************************************************************************************** #usage: runGetFileFullPath $FilePathInfo #eg: current path is /opt/VideoTest/openh264/ABC # runGetFileFullPath abc.txt --->/opt/VideoTest/openh264/ABC # runGetFileFullPath ../123.txt --->/opt/VideoTest/openh264 # runGetFileFullPath /opt/VieoTest/456.txt --->/opt/VieoTest runGetFileFullPath() { #parameter check! if [ ! $# -eq 1 ] then echo "usage: runGetFileFullPath \$FilePathInfo " return 1 fi local PathInfo=$1 local FullPath="" local CurrentDir=`pwd` if [[ $PathInfo =~ ^"/" ]] then FullPath=`echo ${PathInfo} |awk 'BEGIN {FS="/"} {for (i=1;i/opt/VideoTest/openh264/ABC/ SubFolder # runGetFolderFullPat ../EFG --->/opt/VideoTest/openh264/EFG # runGetFolderFullPat /opt/VieoTest/MyFolder --->/opt/VieoTest/MyFolder runGetFolderFullPath() { #parameter check! if [ ! $# -eq 1 ] then echo "usage: runGetFolderFullPath \$FolderPathInfo " return 1 fi local PathInfo=$1 local FullPath="" local CurrentDir=`pwd` if [[ $PathInfo =~ ^"/" ]] then FullPath=${PathInfo} cd ${FullPath} FullPath=`pwd` cd ${CurrentDir} echo "${FullPath}" return 0 elif [[ $PathInfo =~ ^".." ]] then cd ${PathInfo} FullPath=`pwd` cd ${CurrentDir} echo "${FullPath}" return 0 else FullPath="${CurrentDir}/${PathInfo}" cd ${FullPath} FullPath=`pwd` cd ${CurrentDir} echo "${FullPath}" return 0 fi } #****************************************************************************************************** #usage: runUserNameCheck $whoami runUserNameCheck() { #parameter check! if [ ! $# -eq 1 ] then echo "usage: runUserNameCheck \$whoami" return 1 fi local UserName=$1 if [ ${UserName} = "root" ] then echo "" echo "*********************************************" echo "delete files under root is not allowed" echo "detected by run_SafeDelere.sh" return 1 else echo "" return 0 fi } #****************************************************************************************************** #usage: runFolderLocationCheck $FullPath runFolderLocationCheck() { #parameter check! if [ ! $# -eq 1 ] then echo "usage: runFolderLocationCheck \$FullPath" return 1 fi local Location=$1 local FileDirDepth=`echo ${Location} | awk 'BEGIN {FS="/"} {print NF}'` #for other non-project folder data protection #eg /opt/VideoTest/DeletedItem depth=4 if [ $FileDirDepth -lt 5 ] then echo "" echo "*********************************************" echo "FileDepth is $FileDirDepth, and it is less thab the minimum depth(5)" echo "unsafe delete! try to delete non-project related files: $FileDir" echo "detected by run_SafeDelere.sh" return 1 fi return 0 } #****************************************************************************************************** #usage runSafeDelete $Pathinfo runSafeDelete() { #parameter check! if [ ! $# -eq 1 ] then echo "usage runSafeDelete \FileFullPath" return 1 fi local PathInfo=$1 local UserName=`whoami` local FullPath="" local DeleteIterm="" local FileName="" #user validity check runUserNameCheck ${UserName} if [ ! $? -eq 0 ] then return 1 fi #get full path if [ -d $PathInfo ] then FullPath=`runGetFolderFullPath ${PathInfo} ` elif [ -f $PathInfo ] then FullPath=`runGetFileFullPath ${PathInfo} ` else echo "delete iterm does not exist" echo "detected by run_SafeDelere.sh" return 1 fi #location validity check runFolderLocationCheck ${FullPath} if [ ! $? -eq 0 ] then return 1 fi #delete file/folder if [ -d $PathInfo ] then DeleteIterm=${FullPath} echo "deleted folder is: $DeleteIterm" rm -rf ${DeleteIterm} elif [ -f $PathInfo ] then FileName=`runGetFileName ${PathInfo}` DeleteIterm="${FullPath}/${FileName}" echo "deleted file is: $DeleteIterm" rm ${DeleteIterm} fi echo "" } PathInfo=$1 runSafeDelete $PathInfo