2013-03-16 3 views
2

이것은 쉽게 바보 같아야하는 것처럼 보입니다.하지만 작동시키지 못하는 것 같습니다! 새 줄을 기반으로 배열로 나눌 문자열이 있습니다.어떻게 문자열을 배열로 나눕습니까?

아래는 기본적으로 내가하려는 일입니다.

echo $devices 
serial1 device 
serial2 device 

arr=$(magic_function $devices) 
echo ${arr[0]} 
serial1 device 
echo ${arr[1]} 
serial2 device 

답변

3

IFS (내부 필드 분리) 단어 떠들썩한 파티에서 분할되는 방식을 결정한다. 인용 부호가없는 확장은 항상 분할됩니다. 기본적으로 \ t, \ n 및 ''입니다. 개행 문자 만 나눌 수 있도록 \ n으로 설정할 수 있습니다.

IFS=$'\n' arr=($(yourfunc "$devices")) 

새 버전의 bash (4.0 이상)에 대한 또 다른 옵션은 mapfile입니다.

mapfile -t arr < <(yourfunc "$devices") 
+0

이 더 쉬운 방법이지만 반드시 작동해야합니다. 또한 내가 끝나면'unset IFS'라고 부르므로 다른 프로그램에서는 바뀌지 않을 것입니다. – schwiz

+0

'IFS'는 대개 기본적으로 설정되므로 설정을 해제하면 이전 값으로 복원하는 것과 다릅니다. – chepner

관련 문제