Lưu ý, đây là một câu trả lời bash, không phải zsh.
Có những trường hợp trong bash mà bạn không thể sử dụng đường ống:
some_command | some_other_command
bởi vì các đường ống giới thiệu các lớp con cho từng thành phần của đường ống, khi lối thoát con thoát ra, mọi tác dụng phụ mà bạn đang dựa vào sẽ biến mất. Ví dụ, ví dụ giả định này:
cat file | while read line; do ((count++)); done
echo $count
sẽ hiển thị một dòng trống, bởi vì $count
biến không tồn tại trong shell hiện tại.
Việc thay thế quy trình bash cho phép bạn tránh câu hỏi hóc búa này bằng cách cho phép bạn đọc từ đầu ra "some_command" giống như bạn làm từ một tệp
while read line; do ((count++)); done < <(cat file)
# ....................................1.2
echo $count # the variable *does* exist in the current shell
(1) là một chuyển hướng đầu vào bình thường. (2) là bắt đầu của <()
cú pháp thay thế quá trình.
pfctl -f <(echo "pf rules")
sẽ nói mô tả tệp xấu. sử dụng zsh và = (echo "pf rule") thay vào đó hoạt động.