쉘 스크립트(sh) 이해하기..질문입니다.

sea5727의 이미지

이번에 신입으로 리눅스, C, 소켓에 대한 일을 하는곳에 취업을 했습니다.

아직 발령은 안나서 공부중에 있습니다...

이런건 인터넷에 있으니 좀 찾아보라 하실 수 있지만 나름 찾아보고 ㅠㅠ 왔습니다.

다음은 리눅스 시스템의 IP주소를 반환하는 .sh파일입니다.

set `ifconfig`
shift 6
k=`expr length $1`
g=`expr $k - 5`
echo $g
s=${1:5:g}
echo $s > ipaddress

제가 궁금한것은 3번째 라인의 length $1 이라는 표현입니다.
그리고.. 6번째의 s=${1:5:g} 라는것도요...
마지막줄인 $s > ipaddress 이것도 이해가 잘안되는데

결과적으로 이 쉘스크립트는 ip주소를 반환합니다!

김정균의 이미지

expr은 계산을 하는 유틸리티 입니다. windows의 calc의 CUI 버전정도로 이해 하시면 됩니다.
원하시는 부분은 man expr 에서 찾을 수 있는 내용이고요.

k=`expr length $1`

3번째 라인의 lentgh $1은 $1의 문자열 길이를 구하라는 의미입니다.

s=${1:5:g}

6번째 라인의 의미는 substr을 의미합니다. $1 변수의 5번째 글짜 부터 $g 번째 까지의 글자를 추출하라는 의미입니다. expr을 사용했다면 expr에도 substr을 지원하는데 다음과 같이 할 수 있습니다.

s=`expr $1 5 $g`

마지막으로

echo $s > ipaddress

는 $s 의 내용을 ipaddress 라는 파일에 저장하라는 의미입니다.

chocokeki의 이미지

스크립트 실행할 때 -x 옵션 주시면 디버깅이 되어 보기 편해요