내 Bash 스크립트에서 문자열이 디스크인지 확인하고 싶습니다.
그래서 다음 예제를 만들었습니다.
if [[ $disk =~ sd{a..z} ]];then
echo "we found a disk - $disk
.
.
.
.
fi
그러나 실제로 표현식은 $disk를 인식하지 못합니다($disk는 예를 들어 sda sdb sdc sdd 등일 수 있음).
예를 들어
disk=sdb
[[ $disk =~ sd{a..z} ]] && echo "$disk is real disk"
그만큼 좋지 않음
[[ $disk =~ 'sd{a..z}' ]]
내가 어디서 잘못됐나요?
답변1
=~
매뉴얼의 이진 연산자입니다.3.2.5.2 조건부 구성:
"==" 및 "!="와 우선순위가 동일한 추가 이항 연산자 "=~"를 사용할 수도 있습니다. 사용시 연산자 오른쪽에 있는 문자열POSIX 확장 정규식으로 처리됩니다.[...]
{a..z}
중괄호 확장 3.5.1입니다.지원 확장:
중괄호 확장은 임의의 문자열을 생성할 수 있는 메커니즘입니다.
그래서 당신은정규식문자열과 일치하는 패턴:
$ disk=sdb
$ [[ $disk =~ ^sd[a-z]$ ]] && echo "$disk is real disk"
$ sdb is real disk