Параметр проверки Bash Getopt для каждого пользователя в системе - PullRequest
0 голосов
/ 19 апреля 2019

Я сделал скрипт, который работает следующим образом

bash users.sh -u "user" [-f | -d | -g]
  1. -f, показывает количество файлов указанного пользовательского каталога.
  2. -d, показывает количество папок указанного пользовательского каталога.
  3. -g, показывает группы, к которым принадлежит указанный пользователь.

 #!/bin/bash

user="" ;
directory="" ; 

    while getopts u:fgd options; do
        case "$options" in
        u)
        if grep -q "^$OPTARG" /etc/passwd ; then
        user="$OPTARG";
          echo "user existe";
        else
              echo "user no existe"
            fi
        ;;
        g)
        if [ -n "$user" ] ; then
              echo "los grupos del usuario son: ";
              groups "$user" ;
        else
              echo "user missing"
            fi
        ;;
        d)
        if [ -n "$user" ] ; then
          directory=$(grep $user /etc/passwd | cut -d : -f 6);
          directory+=/*/;
          echo "numero de carpetas";
          ls -d $directory | wc -l
        else
              echo "user missing"
            fi
        ;;
        f) 
        if [ -n "$user" ] ; then
          directory=$(grep $user /etc/passwd | cut -d : -f 6);
          echo "numero de archivos";
          ls -p $directory | grep -v /  | wc -l
        else
              echo "user missing"
            fi
        ;;
        *) echo "opcion invalida $options" ;;
        esac

    done

Дело в том, что мой текущий скрипт "должен" включать пользователя в качестве аргумента. Но я бы этого хотел, если аргумент username отсутствует

bash users.sh -u [-f | -d | -g]

Показывает указанную опцию для каждого пользователя системы вместо определенного пользователя

...