验证字符串并确保它由特定字符组成

时间:2016-01-05 22:18:53

标签: linux unix

尝试在命令行验证字符串。每个字符应该在A-Z,a-z,0-9,特殊字符(逗号,下划线,句号)之间。如果有任何其他字符,则显示“无效”否则有效“

例如:

echo "hello123.txt"    returns "valid"
echo "hello?.txt"  returns "invalid"
echo "HEllo_hello"  returns "valid"

谢谢。

3 个答案:

答案 0 :(得分:1)

如果您有合适的grep版本,可以使用grep -v来确定:

echo "test" | grep -v "^[A-Za-z0-9,_.]*$" > /dev/null
echo $? # 1
echo "@test" | grep -v "^[A-Za-z0-9,_.]*$" > /dev/null
echo $? # 0

答案 1 :(得分:0)

在bash中,您可以在[[ ... ]]中的==运算符的右侧使用模式匹配:

#!/bin/bash
for string in 'hello123.txt' 'hello?.txt' 'HEllo_hello' ; do
    if [[ $string == +([A-Za-z0-9,_.]) ]] ; then
        echo valid
    else
        echo invalid
    fi
done

答案 2 :(得分:0)

您可以创建一个脚本,例如:

#!/bin/bash
if [[ $1 = "" ]] ; then
  echo "Please run the following command with a string at the end...\
        Example= ./script.bash testing"
  exit 2
echo "$1" | grep -qi "^[a-z0-9.,_]*$"
if [[ $? = "0" ]] ; then
  echo "Valid"
else
  echo "Invalid"
fi
exit 0