系统中每个用户的Bash getopt检查参数

时间:2019-04-18 22:05:38

标签: bash getopts

我完成了一个脚本,其工作方式如下

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]

它将为系统的每个用户而不是特定用户显示指定的选项

0 个答案:

没有答案