Selvudslettende script til både Linux Bash og Windows Batch

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har et afinstaller script, der rydder op til et add-on-værktøj, der bruges sammen med en applikation.
Versioner af scriptet kører på både Windows og Linux.


Jeg vil gerne kunne slette afinstaller scriptfilen og også den mappe, hvor scriptet kører også (både i tilfælde af en Windows-batchfil og også i tilfælde af en Linux bash-fil). Lige nu er alt andet end det script og den mappe, den kører i, forbliver efter, at den kører.


Hvordan kan jeg slette scriptet og scriptets mappe?


Tak

Bedste reference


I Bash kan du gøre det


#!/bin/bash
# do your uninstallation here
# ...
# and now remove the script
rm $0
# and the entire directory
rmdir `dirname $0`

Andre referencer 1


#!/bin/bash
#
# Author: Steve Stonebraker
# Date: August 20, 2013
# Name: shred\_self\_and\_dir.sh
# Purpose: securely self-deleting shell script, delete current directory if empty
# http://brakertech.com/self-deleting-bash-script

#set some variables
currentscript=$0
currentdir=$PWD

#export variable for use in subshell
export currentdir

# function that is called when the script exits
function finish {
    #securely shred running script
    echo "shredding ${currentscript}"
    shred -u ${currentscript};

    #if current directory is empty, remove it    
    if [ "$(ls -A ${currentdir})" ]; then
       echo "${currentdir} is not empty!"
    else
        echo "${currentdir} is empty, removing!"
        rmdir ${currentdir};
    fi

}

#whenver the script exits call the function "finish"
trap finish EXIT

#last line of script
echo "exiting script"