접기: 첫 번째 문자만 출력

접기: 첫 번째 문자만 출력

문자열을 사용하여 fold문자 배열을 만들고 있습니다.

INPUT=$1
arr=($(fold -w1 <<< "$INPUT"))
echo "$arr"
echo "$arr[@]"

명령을 사용하여 ./myProgram 1234스크립트를 실행합니다.

예상 출력:1 2 3 4

내가 얻는 것: 1그리고1[@]

답변1

출력을 배열에 올바르게 할당했지만 역참조에 대한 도움이 필요합니다.

에코 "$arr"

간단하게 배열의 첫 번째 요소(예: )를 출력합니다 1.

에코 "$arr[@]"

중괄호가 누락되어 bash에게 배열을 첨자로 지정하고 $arr위와 같이 첫 번째 요소를 역참조한 다음 인쇄합니다 [@].

대신 다음을 사용하세요(예:).

printf '%s ' "${arr[@]}"

보다배열에 관한 bash 매뉴얼 섹션그것은 말한다:

참조 배열의 모든 요소를 ​​사용할 수 있습니다 ${name[subscript]}. 쉘의 파일 이름 확장 연산자와의 충돌을 방지하려면 중괄호가 필요합니다.

관련 정보