Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何在bash中检查数字是否为罗马数字_Linux_Bash_Shell_Validation - Fatal编程技术网

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问题