2017-01-04 8 views
1

약간 둘러 봤습니다. 주어진 인수가 16 진수 색상 코드인지 확인하는 작업 방법을 찾지 못하는 것 같습니다 (정규식에서).bash에서 16 진수 색상 코드와 일치합니다.

I 파일 (hex.sh)에 넣어
echo `expr match "$1" '\(#[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})\)'` 

, 그것은 코드 자체를 반환해야하는 반면 아무 것도 반환하지 : 여기가 내 코드입니다. 내가 잘못되었거나 코드가 어떻게되어야합니까?

+0

* * 주어진 인수 것입니다
는 다음과 같은 조정을 사용하여? – RomanPerekhrest

+0

나는 bash 파일로 실행할 것이므로 다음과 같이 할 것이다. sh hex.sh "# 542541" –

+0

'echo'에 전달할 출력을 캡처 할 필요가 없다; 'expr' * 이미 표준 출력에 쓰고 있기 때문에 그 구조가 작동합니다. 'expr match "$ 1" '...''충분하다. – chepner

답변

1

EXPR 일치 "$ 문자열" '($의 정규 표현식)'

중괄호는 {}"파이프 라인" 문자 |뿐만 아니라 일반 괄호는 $regexp에서 탈출해야 () 논의.

#!/bin/bash/ 
echo `expr match "$1" '\(#[A-Fa-f0-9]\{6\}\|#[A-Fa-f0-9]\{3\}\)'` 

시험 출력 :

$ sh hex.sh "#542541" 
#542541 
+0

감사합니다, 그것은 예상대로 정확하게 작동합니다! –

+0

@BraxtonFair, 기꺼이 도와주세요. – RomanPerekhrest

관련 문제