내가 루프에 대한 정규식 성공적으로regex를 for 루프와 함께 사용 하시겠습니까?
$ cat while.sh
#!/bin/sh
arr=(a1c a2c a3c b4c)
i=0
while [[ ${arr[i]} =~ a(.)c ]]
do
echo ${BASH_REMATCH[1]}
((i++))
done
$ ./while.sh
1
2
3
A를 while 루프를 실행하면이 오류
$ cat for.sh
#!/bin/sh
arr=(a1c a2c a3c b4c)
for ((i=0; [[ ${arr[i]} =~ a(.)c ]]; i++))
do
echo ${BASH_REMATCH[1]}
done
$ ./for.sh
./for.sh: line 3: ((: [[ a1c =~ a(.)c ]]: syntax error: operand expected (error
token is "[[ a1c =~ a(.)c ]]")
실제로 for 구문에 유효합니다. for ((i = 0; i <5; i ++)); do echo $ i; done' – mikebabcock
'i <5'는 산술 표현식이기 때문에 알고 있습니다. 중간에있는 그의 정규 표현식은 그렇지 않습니다. 내 대답을 편집하여 더 명확하게 나타 냈습니다. 일반적으로 유효한 방식이 아니라 올바른 방식으로 구성되었음을 의미했습니다. – Mitzimoto
그가 필요한 것은 $입니까? 값은 결과가 아닌'[[evaluation]]에서 얻을 수 있지만 그의 버전에서는 평가가 거짓이 되 자마자 루프가 종료됩니다. 그는 그것이 사실이라고 생각한다고 가정합니다. – mikebabcock