Bash 쉘 스크립트의 코드 줄이 작동하지 않습니다.

Bash 쉘 스크립트의 코드 줄이 작동하지 않습니다.

다음과 같은 코드 줄이 있습니다.

grep -f <(awk '{ print $1 }' fileA.txt | sed 's/\(.*\),/\1 /' ) fileB.txt > fileC.txt

터미널에서 실행하면 작동하지만 *.sh 스크립트에 추가하면 다음 오류가 발생합니다.

format_input.sh: line 12: syntax error near unexpected token `('

다음과 같이 escape()하려고 합니다.

grep -f <\(awk '{ print $1 }' fileA.txt | sed 's/\(.*\),/\1 /' \) fileB.txt > fileC.txt

그러나 여전히 일종의 오류가 발생합니다.

format_input.sh: line 12: (awk: No such file or directory
sed: ): No such file or directory

내가 뭘 잘못했나요?

답변1

이것이 정답인지는 모르겠지만, 댓글보다 코드를 더 많이 포함하고 싶었습니다. 내 생각에는 Bash가 아닌 쉘을 사용하여 부팅하는 것 같습니다 format_input.sh. 나는 이것을 더 간단한 라인으로 테스트했습니다. 파일에는 file다음 내용이 포함되어 있습니다.

$ cat file
content
more content
this is a line
another one

명령줄에서 테스트한 내용은 다음과 같습니다.

$ grep ON <(tr '[a-z]' '[A-Z]'< file)
CONTENT
MORE CONTENT
ANOTHER ONE

나는 이 줄을 내가 명명한 스크립트에 넣고 script다음과 같이 시작합니다.

$ bash script
CONTENT
MORE CONTENT
ANOTHER ONE

$ sh script
script: line 1: syntax error near unexpected token `('
script: line 1: `grep ON <(tr '[a-z]' '[A-Z]'< file)'

(이것은 Cygwin에 있지만 특정 플랫폼은 중요하지 않다고 생각합니다)

관련 정보