【问题标题】:Create Menu using Case Statements使用案例陈述创建菜单
【发布时间】:2020-06-11 08:48:42
【问题描述】:

制作了一个脚本,要求用户输入正确的密码(qwerty),比较文本文件中的哈希值。参考该脚本,我必须在选择 1-7 和 8 退出时加载的其他文件夹中制作一组项目以供选择。考虑到我的 cmets,已经尝试了很多,但无法使其正常工作。谢谢。

#!/bin/bash

#ReadMe=`cat PasswordCheck.sh`
#echo "$ReadMe"
# https://stackoverflow.com/questions/7427262/how-to-read-a-file-into-a-variable-in-shell

#value=$(<PasswordCheck.sh)
#echo "$value"

bash PasswordCheck.sh
# https://stackoverflow.com/questions/13567947/run-bash-commands-from-txt-file

#read -sp 'PasswordCheck.sh'

Val_A="1. Create a folder"
Val_B="2. Copy a folder"
Val_C="3. Set a password"
Val_D="4. Calculator"
    Val_E="5. Create Week Folders"
    Val_F="6. Check Filenames"
    Val_G="7. Download a File"
    Val_H="8. Exit"

    #read -sp 'UserPassword : ' Pass_Var 

    #PwdChk='PasswordCheck.sh'

#if read exit O "PasswordCheck.sh" exit 0 "$SecretHashedPassword"; then
if read "qwerty"; then
    echo "1. Create a folder
    2. Copy a folder
    3. Set a password
    4. Calculator
    5. Create Week Folders
    6. Check Filenames
    7. Download a File
    8. Exit"
    exit 0

else
    echo "Goodbye"
    exit 1

fi
#case $Val_A in
    #9) echo "Create a folder selected";;
    #8|pork) echo "IDK...";;
    #*) echo "Please select a response from numbers 1-4.";;
#esac
    #"2. Copy a folder"
    #"3. Set a password"
    #exit 0

#https://www.linkedin.com/learning/search?entityType=VIDEO&keywords=bash%20case&u=2072140

#if ["$Val_A" -eq "1"]; then
#bash Foldermaker.sh

#if read "1"; then

#fi

exit 0

【问题讨论】:

  • 这可能会有所帮助:How to debug a bash script?
  • 老实说,就您的问题而言,我认为您不会得到令人满意的答案。问题包括:2 个问题合二为一(身份验证和菜单选择应该分开考虑),脚本中有很多噪音(注释代码是否相关?还是 url?最好清理一下),调用 PasswordCheck。我们对此一无所知,对语言的基本工具有误解(if read "qwerty" 不会按照它的英文意思表示)。遵循 bash 教程将有助于提出更好的问题,但至少将其分成两部分并清理代码

标签: bash


【解决方案1】:

您的脚本中的密码检查部分对我来说仍然很模糊,但是我可以帮助您解决 菜单 问题。
选择 可能就是您所需要的需要设置选择菜单
下面是一个 sceleton 脚本,您可以根据需要进行扩展:

#!/bin/bash
function menu() {
        options=("Create_a_folder" "Copy_a_folder" "Set_a_password" "Calculator" "Create_Week_Folders" "Check_Filenames" "Download_a_File" "exit")
        echo "Choose option:" 1>&2
        select opt in ${options[@]}; do
        case ${REPLY} in
                *) choice="${options[$(( $REPLY - 1 ))]}"; break;;
        esac
        done
        echo "$choice"
}

#passwordcheck=`somefunction`
passwordcheck=true    # replace this once your function is ready
if [ "$passwordcheck" == "true" ]; then
        choice=`menu`
        [[ "$choice" == "exit" ]] && exit
        echo "You have chosen: $choice"
fi

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 2010-10-30
    • 2016-05-13
    • 2016-02-21
    • 1970-01-01
    • 2012-08-11
    相关资源
    最近更新 更多