이런 배열이 있다면
arr[0]=2019-06-26
arr[1]=15:21:54
어떻게 값으로 변환할 수 있나요?
'2019-06-26 15:21:54'
답변1
IFS 변수의 첫 번째 문자가 공백(기본값)인 경우 큰따옴표 안에 별표 색인을 사용할 수 있습니다.
#! /bin/bash
arr[0]=2019-06-26
arr[1]=15:21:54
string="${arr[*]}"
printf "'%s'" "$string"
아래에 녹음됨특수 매개변수:
큰따옴표 내에서 확장이 발생하면 IFS 특수 변수의 첫 번째 문자로 구분된 각 인수의 값을 사용하여 단일 단어로 확장됩니다.
답변2
완전성을 기하기 위해 "${array[*]}"
Korn 구문( "$*"
Bourne 특수 매개변수에서 확장됨)도 zsh에서도 작동하지만 zsh에서는 다음을 사용해야 할 수도 있습니다 j
.가입하다) 매개변수 확장 플래그를 사용하면 전역 매개변수에 의존하지 않고 임의의 연결 문자열을 사용할 수 있습니다. 예 $IFS
:
$ a=(foo bar)
$ echo ${(j[:::])a}
foo:::bar
"${a[*]}"
, ksh
(ksh93 및 mksh) 의 경우 첫 번째를 추가하십시오.바이트$IFS
첫 번째 문자 대신 . 이는 다음과 같은 멀티바이트 문자에 중요합니다.
$ ksh -c 'a=(foo bar); IFS="⇅"; echo "${a[*]}"'
foo�bar
$ mksh -c 'a=(foo bar); IFS="⇅"; echo "${a[*]}"'
foo�bar
$ mksh -o utf8-mode -c 'a=(foo bar); IFS="⇅"; echo "${a[*]}"'
foo�bar
(이것이 �
내 터미널 에뮬레이터가 이 문자(0xe2)의 첫 번째 바이트를 렌더링하는 방법입니다. 이 문자 ⇅
자체는 유효한 문자를 형성하지 않습니다.)
배열을 지원하는 다른 Korn 유사 쉘도 작동합니다.
$ bash -c 'a=(foo bar); IFS="⇅"; echo "${a[*]}"'
foo⇅bar
$ zsh -c 'a=(foo bar); IFS="⇅"; echo "${a[*]}"'
foo⇅bar
$ yash -c 'a=(foo bar); IFS="⇅"; echo "${a[*]}"'
foo⇅bar