【发布时间】:2021-04-22 08:00:18
【问题描述】:
我找到了这个,但我不明白:
if [[ "${ARG//[IVXLCDM]/}" != "" ]]
then
echo "Wrong input"
fi
【问题讨论】:
标签: linux bash shell validation
我找到了这个,但我不明白:
if [[ "${ARG//[IVXLCDM]/}" != "" ]]
then
echo "Wrong input"
fi
【问题讨论】:
标签: linux bash shell validation
这是一个相当粗略的测试。它使用模式扩展来断言字符串是否仅由罗马数字中可接受的字符组成,而无需检查语义。
// ... / 将替换变量中出现的任何字符 IVXLCDM。只有当它们都正常时,结果才会是一个空字符串。
为什么粗制滥造?因为它很乐意接受不是有效罗马数字的MCCM。
编辑:
正如@LéaGris 指出的那样,它还将接受一个空字符串作为“Roman”,并且不等式!= 的测试效率低下。
【讨论】:
!= ""而不是使用-n进行比较效率低。
[[ $ARG != +([IVXLCDM]) ]] 至少可以解决空虚问题,但不能解决 MCCM 问题