sed가 배열을 복사하지 못했습니다(종료되지 않은 's' 명령).

sed가 배열을 복사하지 못했습니다(종료되지 않은 's' 명령).

실행 중인 bash 스크립트의 배열을 외부 파일로 복사하려고 하는데 sed에 문제가 있습니다. 몇 시간 동안 검색한 후에도 여전히 답변을 찾을 수 없어서 여기에 질문을 게시해야겠다고 생각했습니다.

ARRAY=( M4d W0rld )

sed '/^#/!s/ARRAY=(.*)/ARRAY=( '${ARRAY[@]}' )/g' test.txt

결과 :

sed: -e expression #1, char 31: unterminated `s' command

그리고 다음은:

ARRAY=( M4d W0rld )

sed '/^#/!s/ARRAY=(.*)/ARRAY=( '$ARRAY' )/g' test.txt

예상대로 작동합니다.

#test.txt    
ARRAY=( M4d )

위의 내용은 내가 원하는 것이 아니지만 첫 번째 옵션이 실패하는 이유는 무엇입니까?

답변1

운 좋게도 답을 찾은 것 같습니다. 다음 코드는 작동합니다.

ARRAY=( M4d W0rld )

sed '/^#/!s/ARRAY=(.*)/ARRAY=( '"${ARRAY[*]}"' )/g' test.txt

별표는 분명히 중요하지만 별표와 @ 기호의 차이점은 무엇입니까? 또한 추가로 큰따옴표를 추가해야 하는 이유는 무엇입니까?

관련 정보