bash 변수질문..
글쓴이: kimes / 작성시간: 목, 2005/05/12 - 6:22오전
bash에서요..
var1=`ls`
이렇식으로 변수에 ls에 결과를 대입했습니다.
ls를 한 실제 결과가
a.txt
b.txt
c d.txt (c d 사이에는 공백이)
이런식으로
3개의 파일이 있다면요..
var1변수에는 "a.txt b.txt c d.txt'
이렇게 저장이 되잖아요..
여기서 저는 세번째 변수 c d.txt만 이용할 일이 생겨서..
var2 = ($var1) #배열로 변화
한 다음에 #{var2[2]} 이렇게 해봤더니
c d.txt가 나오는게 아니라..
c만 나오네요..
어떻게 c d.txt를 하나의 변수로 인식하게끔 할수 없나요..
아 그리고요..
base에서 배열 많이 사용하시나요?
만약 배열을이용하지 않는다면
var="1 2 3 4 5'
에서 5라는 값만 얻고 싶으면 어떻게 해야 하나요?
마치 ${var[4]} 한것 처럼요..
스트링처리를 해야 할거 같은데..
그럼..
Forums:
쉘에서 배열은 자주 사용하지 않는것 같더군요!!!그냥 sed, a
쉘에서 배열은 자주 사용하지 않는것 같더군요!!!
그냥 sed, awk 등등을 활용하면 해결될 문제로 보이는데...
find로 파일 리스트하고.... 뉴라인을 기준으로 5번째 파일 프린트한 예입니다...
오래되었지만 참고용으로 답을 답니다.
구글에서 bash array ls라는 키워드로 검색해서 http://www.linuxquestions.org/questions/programming-9/bash-put-output-from-%60ls%60-into-an-array-346719/ 페이지를 찾을 수 있었습니다.
간추리자면 IFS를 수정하는 것이 핵심이지 않을까 싶습니다.
$ OIFS=$IFS; IFS='
'
$ var1=(`ls -1`)
ls -1 명령은 한 줄에 한 파일만 나오게 되고 각 줄은 개행문자로 구분이 되지요.
다음과 같은 명령으로 공백 문자가 포함된 파일이 정상적으로 배열의 한 원소로 들어간 것을 확인할 수 있었습니다. 여기서 2는 해당 파일 이름이 들어있는 순서입니다. 0부터 시작합니다.
$ echo ${var1[2]}
사용후엔 IFS를 원래대로 돌리는게 나을 듯 합니다.
$ IFS=$OIFS
----
이래저래 검색해보다 기존 IFS를 보존하는 예제가 많아서 수정했습니다.
--------------
若無湖南 是無國家
= 忠武公 =
댓글 달기