Trên một máy Centos 6, công trình này:Không sh thay thế quá trình hỗ trợ <(...)?
bash -c 'if grep -qP --line-buffered ".+" <(tail -n 1000 -F catalina.out) ; then echo "yes"; fi'
và điều này không:
sh -c 'if grep -qP --line-buffered ".+" <(tail -n 1000 -F catalina.out) ; then echo "yes"; fi'
tôi nhận được:
sh: -c: line 0: syntax error near unexpected token `('
sh: -c: line 0: `if grep -qP --line-buffered ".+" <(tail -n 1000 -F catalina.out) ; then echo "yes"; fi'
Nevermind grep và đuôi. Vấn đề là với thingy thay thế quá trình: <(...)
Ai đó có thể cho tôi biết sh có khác gì ở đây không?
[EDIT]
Cảm ơn câu trả lời!
Sự cố phát sinh khi sử dụng capistrano để triển khai. Giá trị mặc định là sử dụng sh nhưng tôi đã thay đổi điều đó thành bash ngay bây giờ. Lý do tôi không thể thực hiện đường ống thông thường là khi sử dụng tail -F | grep -q --line-buffered
, grep sẽ không thoát ngay sau khi khớp. Phải có thêm một chỉnh sửa đối với tệp như echo "" >> catalina.out
và điều này không được chấp nhận trong trường hợp của tôi.
'nếu đuôi ... | grep ...; sau đó ... fi' làm việc cho tôi trong dấu gạch ngang và bash trong chế độ posix. – choroba
@choroba: Có. Nhưng nó hoạt động trong 'sh' hay' ksh'? –
Nó hoạt động trong ksh. 'sh' trên hệ thống của tôi là dấu gạch ngang hoặc bash ở chế độ posix. – choroba