Ajouter l'option -c à umountr

This commit is contained in:
Jephté Clain 2016-05-09 18:46:39 +04:00
parent 278bf5a2d0
commit 3d5aeb2be0
1 changed files with 17 additions and 4 deletions

21
umountr
View File

@ -11,10 +11,18 @@ USAGE
Démonter tous les systèmes de fichiers qui sont montés en-dessous de mountpoint Démonter tous les systèmes de fichiers qui sont montés en-dessous de mountpoint
puis démonter mountpoint. Démonter aussi tous les systèmes de fichiers puis démonter mountpoint. Démonter aussi tous les systèmes de fichiers
bind-montés à partir d'un sous-répertoire de mountpoint." bind-montés à partir d'un sous-répertoire de mountpoint.
OPTION
-c, --continuous
Continuer même en cas d'erreur"
} }
args=(--help '$exit_with display_help') continuous=
args=(
--help '$exit_with display_help'
-c,--continuous continuous=1
)
parse_args "$@"; set -- "${args[@]}" parse_args "$@"; set -- "${args[@]}"
mountp="$1" mountp="$1"
@ -22,7 +30,7 @@ mountp="$1"
[ -d "$mountp" ] || die "$mountp: répertoire introuvable" [ -d "$mountp" ] || die "$mountp: répertoire introuvable"
setx mountp=abspath "$mountp" setx mountp=abspath "$mountp"
run_as_root "$@" run_as_root ${continuous:+-c} "$@"
setx -a mountps=findmnt -nlo TARGET setx -a mountps=findmnt -nlo TARGET
array_contains mountps "$mountp" || die "Vous devez spécifier un répertoire de montage valide" array_contains mountps "$mountp" || die "Vous devez spécifier un répertoire de montage valide"
@ -31,12 +39,17 @@ function show_all() {
findmnt -T "$mountp" -Rnlo TARGET findmnt -T "$mountp" -Rnlo TARGET
findmnt -nlo TARGET | awkrun mountp="$mountp" '{ if (substr($0, 1, length(mountp) + 1) == (mountp "/")) print }' findmnt -nlo TARGET | awkrun mountp="$mountp" '{ if (substr($0, 1, length(mountp) + 1) == (mountp "/")) print }'
} }
function die_maybe() {
[ -n "$continuous" ] && return
die "$@"
}
setx -a mounts=evalp show_all // sort -u // \ setx -a mounts=evalp show_all // sort -u // \
awk '{print length($0) "," $0}' // \ awk '{print length($0) "," $0}' // \
sort -nr // \ sort -nr // \
awk '{sub(/[0-9]+,/, ""); print}' awk '{sub(/[0-9]+,/, ""); print}'
for mount in "${mounts[@]}"; do for mount in "${mounts[@]}"; do
estep "$mount" estep "$mount"
umount "$mount" || die umount "$mount" || die_maybe
done done