실행 중인 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
별표는 분명히 중요하지만 별표와 @ 기호의 차이점은 무엇입니까? 또한 추가로 큰따옴표를 추가해야 하는 이유는 무엇입니까?