Bash验证用户输入

时间:2019-03-22 00:17:56

标签: linux bash validation

我正在制作一个小程序,允许用户输入其名称,然后继续使用其键入的名称创建一个文件夹。我有这个:

#!/bin/bash
echo "Enter your name:"
read name
mkdir /home/mint/Desktop/$name

这工作得很好,但我想知道是否有一种方法可以验证输入,以便我的程序仅接受字母。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:2)

有很多方法可以做到这一点:

while true; do
    read -p "Enter your name: " name
    case "$name" in
        *[^A-Za-z]*) echo "Only letters are allowed" ;;
        *) break ;;
    esac
done
mkdir ~/Desktop/"$name"

您将要找到一个教程。这里有一个:http://mywiki.wooledge.org/EnglishFrontPage
或从堆栈溢出开始:https://stackoverflow.com/tags/bash/info

答案 1 :(得分:0)

像这样吗?

#!/bin/bash
echo "Enter your name:"
read name
name=$(tr -dc [:alpha:] <<<"$name" )
mkdir "/home/mint/Desktop/$name"

答案 2 :(得分:0)

您可以这样做:

#!/bin/bash
echo "Enter your name:"
read name
if [[ "$name" =~ ^[a-zA-Z]+$ ]]; then
  echo "Creating directory: /home/mint/Desktop/$name"
  mkdir /home/mint/Desktop/$name
else
  echo "Your directory name may only use letters. Please try again."
fi

使用正则表达式,仅允许使用小写的a-z和大写的A-Z字母。