다음 쉘 스크립트 코드가 있습니다. 여기서 NR==$i
을 gawk
문에 사용하면 작동하지 않으며, 단순히 NR==1
(또는 다른 정수 값)을 사용하면 완벽하게 작동합니다.
for ((i=1;i<=5;i++))
do
gawk 'NR==$i{//some action}' input.txt
done
아무에게도 문제가 무엇인지 알려 주실 수 있습니까?
다음 쉘 스크립트 코드가 있습니다. 여기서 NR==$i
을 gawk
문에 사용하면 작동하지 않으며, 단순히 NR==1
(또는 다른 정수 값)을 사용하면 완벽하게 작동합니다.
for ((i=1;i<=5;i++))
do
gawk 'NR==$i{//some action}' input.txt
done
아무에게도 문제가 무엇인지 알려 주실 수 있습니까?
문제는 awk
스크립트 주위에 작은 따옴표가 bash
문자열 내부에 대체하지 않고, gawk
합니다 (gawk
스크립트에서 초기화되지 i
이후 $0
과 동일 함) 그대로 $i
를 볼 수 있다는 것을 의미한다는 것이다.
이 시간, 대신 큰 따옴표를 사용 : 일반적으로
for ((i=1;i<=5;i++))
do
gawk "NR==$i{//some action}" input.txt
done
, 아마 더 좋을 것이다 명시 적으로 변수를 전달하는 :
for ((i=1;i<=5;i++))
do
gawk -v i=$i 'NR==i{//some action}' input.txt
done
그 문제는 당신이 간단한 사용하는 것입니다 따옴표 ('
)를 gawk 스크립트와 함께 사용하면 bash
의 값이 $i
으로 바뀌지 않으므로 대신 큰 따옴표 ("
)를 사용해보십시오.