shell 변수 숫자로 읽기

eternityova의 이미지


nr=2
result=$(echo "$check" | awk 'NR==$nr {print $1}')
echo $result

위 코드에서 nr을 숫자로 인식하지 않는거 같습니다
expr도 써보고 let도 써보고
이것저것 해봤지만 문자로만 인식하는거 같습니다

혹시 해결책 아시는분 있으신가요???

익명 사용자의 이미지

#!/bin/bash
check="123
abc
456
def
789
ghi
"
 
nr=3
result=$(echo "$check" | awk "NR==$nr"'{print $0}')
echo $result
eternityova의 이미지

"' 이 두개가 붙어있어야 되는군요

익명 사용자의 이미지

쉘상에서 작은따옴표 안에 있는 문자열은 모두 일반 문자열로 취급합니다. 그래서 $ 같은 특수 문자를 해석하지못해요.

큰따옴표는 특수문자등을 구별 할 수 있구요.

eternityova의 이미지

설명 감사합니다 ^^

pynoos의 이미지

awk 에 넘기는 인자를 작은 따옴표로 묶고 싶으실 때는 환경변수를 이용하는것이 좋겠네요. 그럴려면, export를 통해 넘기고, ENVIRON으로 받도록 고치면되겠네요.

#!/bin/bash
check="123
abc
456
def
789
ghi
"
 
export nr=3
result=$(echo "$check" | awk 'NR==ENVIRON["nr"] {print $0}')
echo $result