| #!/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_SafeDelete.sh $DeleteItermPath |
| # eg: 1 ./run_SafeDelete.sh tempdata.info --->delete only one file |
| # eg: 2 ./run_SafeDelete.sh ../TempDataFolder --->delete entire folder |
| # ./run_SafeDelete.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<NF;i++) printf("%s/",$i)}'` |
| cd ${FullPath} |
| FullPath=`pwd` |
| cd ${CurrentDir} |
| echo "${FullPath}" |
| return 0 |
| elif [[ $PathInfo =~ ^".." ]] |
| then |
| FullPath=`echo ${PathInfo} |awk 'BEGIN {FS="/"} {for (i=1;i<NF;i++) printf("%s/",$i)}'` |
| cd ${FullPath} |
| FullPath=`pwd` |
| cd ${CurrentDir} |
| echo "${FullPath}" |
| return 0 |
| else |
| FullPath=${CurrentDir} |
| echo "${FullPath}" |
| return 0 |
| fi |
| } |
| #****************************************************************************************************** |
| #usage: runGetFolderFullPath $FolderPathInfo |
| #eg: current path is /opt/VideoTest/openh264/ABC |
| # runGetFolderFullPat SubFolder --->/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_SafeDelete.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_SafeDelete.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 item does not exist" |
| echo "detected by run_SafeDelete.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 |
| |
| |