Usando 'case' para manipular argumentos de script

6

Posso usar a instrução case para manipular argumentos? Então, usando -restart eu gostaria de executar "-umount" e "-mount"

#!/bin/bash
case "$1" in
-mount
mount /ip/share1 /local/share1
;;
-umount
umount /ip/share1
;;
-restart
# echo TODO
;;
*)
[...]
esac
    
por Pol Hallen 25.11.2014 / 20:03

2 respostas

7

Parece-me que deve funcionar, além do quântico sintático de falta de ) s. Eu testei isso e ele se comporta corretamente ..

#/bin/bash
case "$1" in
  "-mount")
    mount /path/to/device /path/to/mountpoint
    ;;
  "-unmount")
    umount /path/to/mountpoint
    ;;
  "-mount")
    "$0" -unmount
    "$0" -remount
    ;;
  *)
    echo "You have failed to specify what to do correctly."
    exit 1
    ;;
esac
    
por 25.11.2014 / 20:22
2
#!/bin/bash
unset u
mnt() { ${u+u}mount /ip/share1 ${u-"/local/share1"}; }
case "$1"   in
(-mount)            :;; 
(-umount)  u=        ;;
(-restart) u= mnt    ;;
(*)               ! :;;
esac && mnt

Você pode usar uma função como ^ acima ^.

    
por 25.11.2014 / 20:57

Tags