함수가 실패하면 스크립트를 종료하고 싶습니다. 일반적으로 이것은 문제가되지 않지만 프로세스 대체를 사용하면 문제가됩니다. 당신은 어떤 실패에 스크립트를 종료 set -e을 사용할 수 있습니다 $ cat test.sh
#!/bin/bash
foo(){
[ "$1" ] && echo pass || exit
}
read < <(foo 123)
프로세스 대체를 이해하는 데 어려움을 겪고 있습니다. 내가 아는 한, echo abcd | tr -d 'b'
tr -d 'b' <(echo abcd)
모두 동일한 출력을 제공해야합니다. 하지만 첫 번째 작품 (출력 'acd')하지만 두 번째는 tr: extra operand '/dev/fd/63'
왜 그런가요? tr은 'abcd'를 파이프를 통해서
stdout에서 수정 된 내용을 읽기 전에 하위 프로세스를 실행하여 두 단계로 파일을 수정하려고합니다. bash에서 완벽하게 작동하는 프로세스 대체를 사용하여이를 수행하려고하지만 노드에서 시도 할 때 그렇지 않습니다. 이 명령이 var p = exec('command2 <(capture /dev/stdout | command1 -i file -) -',
은 내가 파일 기술자를 통해 하위 프로세스에 명령을 보내도 표준 출력에 대한 사용자의 의사 소통을하지만,하고자하는 bash는 스크립트가 먼저이 같은 서브 프로세스 시작하여 "이 설정"수 : #!/bin/bash
# Initiate(?) file descriptor 3, and let it direct to a newly
# started gnuplot
여러 CPU에서 스레드 을 사용하여 병렬 처리되는 단일 계산 처리 프로세스 X가 있습니다. 각 스레드는 스트림 출력을 생성하고 각 스트림 은 두 번째 프로세스 Y의 자체 인스턴스에 개별적으로 연결되어야합니다 (여기에는 스레드가 있기 때문에 만큼 많은 프로세스 Y가 실행됩니다). X와 Y는 각각 처리량이 상당히 좋도록 이진 형식을 쓰고 읽습니다. I/O 오버
컨텍스트 갖는 함수 I 후에 그리스트를 반복 실행하는 스크립트를 멈춘다. 각 반복에서 'eval'을 통해 두 개의 원격 파일을 비교하기위한 'diff'명령을 생성하는 함수를 호출 할 것으로 예상됩니다. 'diff'명령은 공개 된/개인 키를 통해 암호없는 인증을 수행하는 'ssh'를 통해 각자 원격 파일을 호출하는 두 개의 프로세스 대체를 통해 입력을 가져옵
큰 gzip 파일 data.txt.gz이 있다고 가정 해 봅시다. 그러나 종종 ungzipped 버전을 프로그램에 제공해야합니다. 물론, 대신 독립을 만드는이 data.txt을 풀고, 하나는 process substitution 구문을 사용할 수 있습니다 ./program <(zcat data.txt.gz) 그러나, 상황에 따라,이 무심하고 오류가 발생하기
프로그램에 대한 입력 파일에 대해 프로세스 대체를 사용하려고하는데 작동하지 않습니다. 일부 프로그램이 입력 파일에 대한 프로세스 대체를 허용하지 않기 때문입니까? 하면 작동하지 않습니다 다음 bash -c "cat meaningless_name"
>sequence1
gattacagattacagattacagattacagattacagattac