我看了一下,我似乎无法找到一种工作方式来验证(在正则表达式中)给定的参数是否为十六进制颜色代码。这是我的代码:
echo `expr match "$1" '\(#[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})\)'`
当我把它放入一个文件(hex.sh)时,它什么都不返回,而它应该返回代码本身。我错了或代码应该是什么?
答案 0 :(得分:1)
expr匹配“$ string”'($ regexp)'
花括号{}
和“管道”字符|
以及常规括号()
应在$regexp
参数内进行转义。
使用以下调整:
#!/bin/bash/
echo `expr match "$1" '\(#[A-Fa-f0-9]\{6\}\|#[A-Fa-f0-9]\{3\}\)'`
测试输出:
$ sh hex.sh "#542541"
#542541