メニューが正しく機能しない

メニューが正しく機能しない

現在、私はInto to Unixコースのメニューを見つけようとしています。今経験している問題は、スクリプトに何かを入力すると、入力に応じて応答するスクリプトの代わりに私の入力が表示されることです。しかし、本によると、イベントに使用されている形式に準拠しているので、正しく実行する必要があると思いますか?これを行うには何を修正する必要がありますか?私が使用するシェルもbashです。

私がしている宿題はこうです。

  1. 以下を行うためのオプションを提供するケーススクリプトを作成します。

    ㅏ。 /etc/passwd ファイルに ID 番号が 999 より大きい 4 人のユーザーをリストします。

    b.dateコマンドには、月、日、年だけが表示されます。

    氏。ユーザーが選択したファイルをインポートし、すべての文字を大文字で表示します。

今使っているコードです

clear
if [ "$#" -ne 1 ]; then
    echo Press 1 for a list of users with the UID greater than 999
    echo Press 2 for the Day, Month, and Year
    echo Press 3 to show a file name from lower case to upper case
    read a
    exit
fi

case "$1" in
    1) awk -F: '($3>=999)  && ($3!=9999)' /etc/passwd ;;
    2) echo Todays date is: ; date | awk '{print $2, $3, $6}' ; sleep 1 ;;
    3) ls -aC | more ; echo What file would you like to change from lower case to uppercase?  ;read y ;sleep 1 ; clear ; echo $y | tr '[:lower:]' '[:upper:]' ; sleep 1 ;;
    *) echo Invalid input
esac

答え1

exit@manatworkがコメントで指摘したように、ユーザーが選択を入力した直後にこれを実行したくありません。また、ステートメントはcaseスクリプトの最初の引数(またはBash用語の最初の位置引数)に対しても機能します。$1論理的に、これはあなたが望むものではありません。readユーザーの選択を入力すると、次のようaになりますcase

case "$a"
in
...

関連情報