linux - 验证来自 bash 的输入

标签 linux bash unix

我需要制作一个接受用户输入并进行一些验证的 bash 脚本。

输入量小。我只需要让用户选择"is"或“否”以及文件路径,并确保输入确实是文件路径并且他输入是或否。

如何验证用户输入?

最佳答案

从你的 bash 提示类型

助读


例子: 第 1 步。

pete@ruthie ~ $ read -p "Yes or No :" ANSWER

是或否:

pete@ruthie ~ $ echo $ANSWER

第 2 步。

case $ANSWER in 
    Y* | y* ) echo "ANSWER is yes" ;; 
    N* | n*) echo ANSWER is no;; 
     *) echo "Unclear Response" ;; 
esac

答案是肯定的

或者全部在一行中:

case $ANSWER in Y* | y* ) echo "ANSWER is yes" ;; N* | n*) echo ANSWER is no;; *) echo "Unclear Response" ;; esac

答案是肯定的

所以有点像::

   read -p "Enter File Name :" FILE_TO_CHECK 

    if [ ! -e "$FILE_TO_CHECK" ]; then 
        echo -e "There is no file called $FILE_TO_CHECK \n please check spelling"
    else
        echo  "Congratulations found $FILE_TO_CHECK. "
         ls -lah $FILE_TO_CHECK
         read -p "Process $FILE_TO_CHECK ? Y or N : PROCEED
           case $PROCEED in
             Y* | y*)
##call function or system command to do something with this data
               foo $FILE_TO_CHECK

             ;;
            * )
             echo -e "Note $USER\n No action taken by $0 on $FILE_TO_CHECK"
             ;;
            esac

    fi

测试命令是你的 friend 。您确实需要尽快了解它的方法。

帮助[

帮助测试

“help bashthing”命令是一个很好的快速提醒。

另请参阅:高级 Bash 脚本指南 (ABS) http://tldp.org/LDP/abs/html/

总的来说: 这是一个非常简单的示例,不会以意外的用户输入方式容纳太多。 我可能会为此的每个步骤调用函数,因为这样我就可以有条件地代表用户再给一次机会。

像这样嵌套的案例测试非常丑陋:) === 很难变得整洁并稍后阅读

还有其他方法可以实现所有这些zenity for a GTK style GUI

A.B.S 非常棒,但不要试图一次吃完!

关于linux - 验证来自 bash 的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10038437/

相关文章:

regex - 带有 {} grep 和正则表达式的大括号 : Why does it exceed the maximum value?

linux - 如何使用终端复制文件夹中的特定文件

linux - 为什么 puppet 资源在指定提供者时表现不同

c++ - 读取 .txt 文件中的多行并输出每行的答案

arrays - 大型 Bash 数组或注销终止

linux - 使用bash将二进制文件转换为十进制格式,如何?

php - 建议 : 8 million send request

linux - 如何编写脚本来执行git pull?

bash - 苹果操作系统 : shell not recognising scp

c - 在unix中检测蜂窝网络连接类型(2G/EDGE/3G/HSPA/HSPDA/LTE)