Bash验证用户输入

问题描述 投票:-1回答:3

我正在创建一个小程序,让用户写下他们的名字,然后继续创建一个包含他们输入名称的文件夹。我有这个:

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

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

linux bash validation
3个回答
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 或者从Stack Overflow开始:https://stackoverflow.com/tags/bash/info


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字母。


0
投票

像这样的东西?

#!/bin/bash
echo "Enter your name:"
read name
name=$(tr -dc [:alpha:] <<<"$name" )
mkdir "/home/mint/Desktop/$name"
© www.soinside.com 2019 - 2024. All rights reserved.