我使用以下语法作为ksh脚本的一部分来验证Validation
中是否存在单词LINE_FROM_FILE
。
[[ "${LINE_FROM_FILE##*Validation}" != "${LINE_FROM_FILE}" ]] && print "match Validation"
此语法的问题在于它还匹配Valid
或ValidationVALID
等字词,我的目标是与变量{{1}中的单词Validation
完全匹配}。
我问我是否也可以在我的脚本中使用Perl语法来完全匹配单词$LINE_FROM_FILE
,例如:
Validation
答案 0 :(得分:0)
如果你使用bash,那你很幸运:
示例:
input=$1
if [[ "$input" =~ "[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]" ]]
# ^ NOTE: Quoting not necessary, as of version 3.2 of Bash.
# NNN-NN-NNNN (where each N is a digit).
then
echo "Social Security number."
# Process SSN.
else
echo "Not a Social Security number!"
# Or, ask for corrected input.
fi
答案 1 :(得分:0)
测试该行是否包含单词分隔字符之间的单词。一个有用的技巧是在字符串的开头和结尾添加一个单词分隔符,以防该单词位于字符串的开头或结尾。
[[ " $LINE_FROM_FILE " == *[![:alnum:]]Validation[![:alnum:]]* ]]
这假设单词仅由字母和数字组成。如果您有不同的定义,请调整模式。
请注意,您编写的测试[[ "${LINE_FROM_FILE##*Validation}" != "${LINE_FROM_FILE}" ]]
是一种编写[[ $LINE_FROM_FILE = *Validation* ]]
的复杂方法(即检查Validation
作为子字符串)。