Linux 如何在bash中检查数字是否为罗马数字
我发现了这个,但我不理解它:Linux 如何在bash中检查数字是否为罗马数字,linux,bash,shell,validation,Linux,Bash,Shell,Validation,我发现了这个,但我不理解它: if[[“${ARG/[IVXLCDM]/}”!=“”]] 然后 回显“输入错误” fi 这是一个相当粗糙的测试。它使用模式扩展断言字符串是否仅由罗马数字中可接受的字符组成,而不检查语义 //将替换变量中出现的任何字符IVXLCDM。只有当它们都正常时,结果才会是空字符串 为什么是原油?因为它很乐意接受不是有效罗马数字的MCCM 编辑: 正如@LéaGris所指出的,它还将接受一个空字符串作为“Roman”,并使用不等式进行测试=效率低下。它还接受一个不能被视为罗马
if[[“${ARG/[IVXLCDM]/}”!=“”]]
然后
回显“输入错误”
fi
这是一个相当粗糙的测试。它使用模式扩展断言字符串是否仅由罗马数字中可接受的字符组成,而不检查语义
//
将替换变量中出现的任何字符IVXLCDM
。只有当它们都正常时,结果才会是空字符串
为什么是原油?因为它很乐意接受不是有效罗马数字的MCCM
编辑:
正如@LéaGris所指出的,它还将接受一个空字符串作为“Roman”,并使用不等式
进行测试=代码>效率低下。它还接受一个不能被视为罗马数字的空字符串,与!=“
而不是使用-n
。公正的评论,@LéaGris。。。介意我把这个纳入我的答案吗?去吧,这就是为什么我没有给出答案,如果你提到额外的细节,你的答案会更好。扩展模式[[$ARG!=+([IVXLCDM])]
至少会处理空性问题,但不是mcm问题