1

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

输入很小。我只需要让用户选择“是”或“否”和一个文件路径,并确保输入确实是一个文件路径并且他输入的是或否。

如何验证用户输入?

4

1 回答 1

4

从您的 bash 提示符类型

帮助阅读


示例: 步骤 1。

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

是或否:

皮特@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

test 命令是你的朋友。你真的需要尽快学习它的方法。

help [

help test

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

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

FWIW:这是一个非常简单的示例,不会以意想不到的用户输入方式适应太多。我可能会为此每个步骤调用函数,因为这样我可以有条件地代表用户有另一个机会。

像这样嵌套的案例测试很丑:) === 很难整理好以后再读

对于 GTK 风格的 GUI,还有其他方法可以实现所有这些尝试zenity

ABS非常好,但不要试图一次吃掉它!

于 2012-04-05T19:59:07.280 回答