BASH - ユーザー名を入力できる状況オプション

BASH - ユーザー名を入力できる状況オプション

-u userオプションにユーザー名を入力する必要があるケーススクリプトがあります...このオプションに特定の種類のユーザーグループをリストするには、user変数をどのように入力する必要がありますか?助けてくれてありがとう。

#!/bin/bash
while [[ "$1" =~ ^- && ! "$1" == "--" ]]; do case $1 in
            -h | --help)
                    echo "usage=$(basename "$0")[-h][-g][-u user][-e]
                    -h      [show help]
                    -g      [show only primary group, otherwise all]
                    -u user [show groups of specific user, otherwise logged] user
                    exit
                    ;;
            -g | --primary)
                    shift;
                    echo "under work"
                    ;;
            -u $user | --user)
                    shift;
                    echo "$(groups user)"
                    ;;
esac; shift; done
if [[ "$1" == '--' ]];then
    shift;
fi

ベストアンサー1

shift「現在」最初のパラメータ($1)が削除され、その後のすべてのパラメータが「左に移動」するので、大文字と小文字を次のように変更するだけです-u

        -u | --user)
            shift;
            echo "$(groups $1)"
        ;;

ユーザーが-uまたは後ろに指定されているとします--user(たとえば-u my_user)。

また、現在の2番目のケースでは、「working」とマークされたステートメントを削除する必要があることに注意してください。これはshift、ブロックの後の「global」ディレクティブが原因で、コマンドラインの次の引数を削除するためです。shiftcase

おすすめ記事