다음과 같은 코드 줄이 있습니다.
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에 있지만 특정 플랫폼은 중요하지 않다고 생각합니다)