Trong bash, chuyển hướng có thể xảy ra ở bất kỳ đâu trong dòng (nhưng bạn không nên làm điều đó! --- xem the bash-hackers tutorial). Bash lấy >5
làm chuyển hướng, tạo tệp đầu ra 5
và sau đó xử lý phần còn lại của đối số. Do đó, echo 2*3 is a valid inequality
xảy ra, cung cấp cho bạn kết quả bạn thấy trong tệp xuất 5
.
Những gì bạn có thể muốn là
echo "2*3>5 is a valid inequality"
hoặc
echo '2*3>5 is a valid inequality'
(với đơn dấu ngoặc kép), một trong hai trong số đó sẽ cung cấp cho bạn những thông điệp mà bạn chỉ định như một bản in trên dòng lệnh. Sự khác biệt là, trong phạm vi ""
, các biến (chẳng hạn như $foo
) sẽ được điền vào, nhưng không phải trong phạm vi ''
.
Sửa: Các bash man
page nói rằng các nhà khai thác chuyển hướng
có thể đặt trước hoặc xuất hiện bất cứ nơi nào trong một lệnh đơn giản hoặc có thể làm theo một lệnh. Chuyển hướng được xử lý theo thứ tự chúng xuất hiện, từ trái sang phải.
Sử dụng dấu ngoặc: '$ echo "2 * 3> 5 là một sự bất bình đẳng hợp lệ"' Nếu bạn là [chuyển hướng] (http://www.tldp.org/LDP/abs/html/io-redirection.html) đầu ra – dawg
không quá rõ ràng. Tôi đã sử dụng Linux trong 15 năm, tôi không có ý tưởng bạn có thể đặt chuyển hướng bất cứ nơi nào cho đến bây giờ. – njzk2
@ njzk2, POSIX không yêu cầu nó được hỗ trợ ở bất kỳ đâu ngoài đầu hoặc cuối, nhưng không * không cho phép * hành vi như vậy; do đó, đó là một phần mở rộng bash, nhưng một hoàn toàn hợp pháp. –