CSV 북마크 파일을 다음으로 내보내고 싶습니다.
Physics,physics.stackexchange.com
Stack Overflow,stackoverflow.com
Unix & Linux,unix.stackexchange.com
두 개의 Bash 배열로 분할됩니다. 각 배열에는 파일의 한 열이 포함됩니다. 첫 번째 배열은
"Physics" "Stack Overflow" "Unix & Linux"
공백을 처리하는 데 문제가 있습니다. cut
이렇게 사용 해보려고 해요
declare names=($(cut -d ',' -f1 ~/bookmarks.csv))
모든 단어가 분리된 배열을 생성합니다. 예를 들어, echo ${names[1]}
반환
Stack
설마
Stack Overflow
답변1
Stack Overflow
공백이 있으므로 배열에 할당할 때 두 개의 다른 변수로 처리됩니다. BASH
다른 쉘(예: 등) 에서도 KSH
변수 이름에는 공백이 포함될 수 없으므로 변수를 Stack Overflow
작은따옴표나 큰따옴표로 묶어도 작동하지 않습니다.
다음 명령을 사용하여 이를 확인할 수 있습니다.
export Stack Overflow=name
echo $Stack Overflow
사실상 출력은 $Stack(아직 값이 선언되거나 할당되지 않음) Overflow
에 대한 인수 와 단어 가 됩니다 .echo
Overflow
echo $Overflow
이는 해당 값을 변수에 할당하는 명령을 name
사용하여 출력됩니다 .export
Stack
Overflow=name
다음 중 하나를 시도하는 경우:
export "Stack Overflow'=name
export 'Stack Overflow'=name
오류 -bash: export: Stack Overflow=name': not a valid identifier
또는 가 표시됩니다 -bash: export: Stack Overflow=name': not a valid identifier
.
당신이 할 수 있는 한 가지는 두 문자열 사이에 밑줄을 넣는 것입니다:
export Stack_Overlow=name
이렇게 하면 echo $Stack_Overflow
출력이 제공됩니다 name
. CSV 파일의 내용에 공백이 포함되어 있으므로 더 많은 작업이 필요합니다.