Hi, On 10/28/19 8:00 PM, Bhaskar Chowdhury wrote: > This patch will remove old kernel and modules directory from > the system interactive way and also at once ,provied the parameter > given to the invoking script. > > Signed-off-by: Bhaskar Chowdhury <unixbhaskar@xxxxxxxxx> > --- > scripts/prune-kernel | 58 ++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 58 insertions(+) > > diff --git a/scripts/prune-kernel b/scripts/prune-kernel > index 58a7650ce592..a6c990450ddc 100755 > --- a/scripts/prune-kernel > +++ b/scripts/prune-kernel > @@ -1,2 +1,60 @@ > #!/bin/bash > # SPDX-License-Identifier: GPL-2.0 > +#This script will delete old kernels and modules directory related to it,both > +#automated and interactive way, if you choose -i or --interactive as parameter. > +#For normal operation you have to invoke this script like below > +#prune-kernel -r kernel_ver modules_dir_name > +flag=$1 > +kernel_ver=$2 > +modules_dir_name=$3 > +boot_dir=/boot > +modules_dir=/lib/modules > + > +remove_old_kernel() { > + cd $boot_dir > + rm -If vmlinuz-$kernel_version System.map-$kernel_version config-$kernel_version > + return 0 > +} > + > +remove_old_modules_dir() { > + cd $modules_dir > + rm -rf $modules_version > + return 0 > +} > + > +usage() { > + printf "Usage: $(basename $0) [-ri] \n" > + printf "\n -r | --remove kernel_ver modules_dir_name \n" > + printf "\n -i | --interactive use as interactive way \n" > +} > + > +while getopts :hir opt;do what is the purpose of "opt" above? It is not used AFAICT. My internet searching says that 'getopts' does not support "--options" (long options). But then $flag is used below, not $opt, so the long options are just supported by "flag=$1" at the beginning of the script. > + case "$flag" in > + -i | --interactive) > + printf "\nEnter kernel version to remove or blank/empty to exit:%s" > + read kernel_version > + if [[ $kernel_version != "" ]]; then > + remove_old_kernel > + printf "Please give the full modules directory name to remove:%s" > + read modules_version Need to handle modules_version = "" here. > + remove_old_modules_dir > + printf "\n\n\n Removed kernel version:$kernel_version and associated modules directory:$modules_version ..Done.\n" > + else > + exit 1 > + fi > + ;; > + -h | --help) > + usage > + exit 1 > + ;; > + -r | --remove) What happens if a user enters: ./scripts/prune-kernel -r and no kernel_ver or modules_dir_name after -r? > + shift $(( OPTIND -1 )) What is the purpose of the 'shift' since there is no loop to process more options? > + cd $boot_dir > + rm -f $kernel_ver > + cd $modules_dir > + rm -rf $modules_dir_name > + printf "Removed kernel version:$kernel_ver and modules directory:$modules_dir_name from the system. \n\n" > + exit 0 > + ;; > + esac > +done This patch does not delete the original script loop, so that still follows after the 'done' above. Was that intentional? -- ~Randy