요소에 공백이 포함될 수 있는 배열이 있습니다.
set ASD "a" "b c" "d"
이 배열을 쉼표로 구분된 값의 단일 문자열로 변환하려면 어떻게 해야 합니까?
# what I want:
"a,b c,d"
지금까지 얻을 수 있는 가장 가까운 방법은 배열을 문자열로 변환한 다음 모든 공백을 바꾸는 것입니다. 문제는 배열 요소 자체에 공백이 포함되지 않은 경우에만 작동한다는 것입니다.
(echo $ARR | tr ' ' ',')
답변1
Fish 2.3.0부터 string
내장 기능을 사용할 수 있습니다.
string join ',' $ASD
이 답변의 나머지 부분은 이전 버전의 물고기에 적용됩니다.
한 가지 옵션은 변수 연결을 사용하는 것입니다.
echo -s ,$ASD
이렇게 하면 시작 부분에 추가 쉼표가 추가됩니다. 제거하려면 다음을 사용할 수 있습니다 cut
.
echo -s ,$ASD | cut -b 2-
완전성을 위해 다음을 입력하여 사용할 수도 있습니다 sed
.
echo -s $ASD, | sed 's/,$//'
답변2
printf
and paste
대신 echo
and를 사용할 수 있습니다 tr
.
printf '%s\n' $ASD | paste -sd,
AFAIK에는 fish
배열 요소를 연결하는 기본 제공 방법이 없습니다.