用于检查输入是否仅包含字母数字字符的Shell 脚本
如果您想要一个仅包含字母数字字符的输入,即 1-9 或 az 小写和大写字符,我们可以在 Shell 脚本中使用正则表达式或简称 Regex 来验证输入。
例子:
Input: Geeksforgeeks
Output: True
Explanation: Here all the inputted data are alphanumeric
Input: Geeks@for@geeks
Output: False
Explanation: @ is not alphanumeric
这里我们的任务是编写一个脚本来输入一个变量,它检查输入字符串从头到尾只有数字或字母(小写或大写)。如果有任何其他特殊字符,while 循环中的条件将评估为 false,因此将执行 while 循环,并再次输入变量,然后再次检查字母数字字符的 while 循环条件。循环将继续,直到用户仅输入字母数字和非空字符串或数字。 \
#!/bin/bash
# Input from user
read -p "Input : " inp
# While loop for alphanumeric characters and a non-zero length input
while [[ "$inp" =~ [^a-zA-Z0-9] || -z "$inp" ]]
do
echo "The input contains special characters."
echo "Input only alphanumeric characters."
# Input from user
read -p "Input : " inp
#loop until the user enters only alphanumeric characters.
done
echo "Successful Input"
输出:
下面的代码测试用例截图被执行,它只接受非空的字母数字输入。它甚至拒绝空输入和不包括字母和数字的其他字符。以下代码是一个正则表达式,用于检查从 start(^) 到 end($) 的数字或字母以及空输入条件(-z 代表零长度)。因此,shell 脚本会一次又一次地提示用户,直到他/她输入一个字母数字字符。