bash
파일이 아닌 파일에 스트림을 전달할 수 있는 함수를 만들어야 합니다 . 기능은 다음과 같습니다.
ff() { cat /etc/group | fgrep -f "$1" ;}
내가 실행하면 다음과 같다.
ff <( echo some_user )
오류 메시지가 나타납니다.
fgrep: /dev/fd/63: No such file or directory
바꾸다:
some_user:x:0:
답변1
이는 의 버그 또는 제한 사항입니다 bash
. 어쨌든 bash
파일 설명자 63은 닫혀 있습니다. 이는 echo
실행 전에 기록되고 있던 파이프의 읽기 끝 입니다 fgrep
.
zsh
아니면 ksh93
그런 제한은 없습니다.
이 경우 어쨌든 다음 두 프로세스가 필요하지 않습니다.
ff() { fgrep -f "$1" < /etc/group; }
일반적으로 다른 셸을 사용하거나 다음 을 수행하여 이 bash
제한 사항을 해결할 수 있습니다.
ff() { sh -c 'cat /etc/group | fgrep -f "$1"' sh "$1";}
또는:
ff() { cat /etc/group | fgrep -f /dev/fd/3;} 3<"$1"