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 등등을 활용하면 해결될 문제로 보이는데...
#!/bin/sh find . -type f -maxdepth 1 | awk ' BEGIN { FS="\n"; } { if (NR==5) {printf ""$1"\n";} }'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를 보존하는 예제가 많아서 수정했습니다.
--------------
若無湖南 是無國家
= 忠武公 =
댓글 달기