내 스크립트는 파이프에서 입력을 받아 bash의 문자열 대체를 사용하여 개행을 쉼표로 대체해야 합니다.
#! /bin/bash
read -d -r input
echo $input
$input=${input//\n/,}
echo $input
그러나 bash는 개행 문자를 바꾸는 대신 첫 번째로 일치하는 패턴을 실행하려고 시도합니다.
echo -e "this\nis\na\ntest\n" | test.sh
다음과 같은 결과가 출력됩니다:
test.sh: line 5: this: command not found
그리고 변수는 $input
변경되지 않습니다. 큰따옴표나 작은따옴표도 도움이 되지 않습니다. 저는 Linux Mint에서 bash 버전 4.3.11을 사용하고 있습니다.
답변1
$
루프 내부의 할당 라인에서 제거하십시오. 해당 값을 할당할 변수의 이름으로 사용하려고 하는데, 그 결과 매우 이상한 동작이 발생합니다.