2011-11-16 30 views
7

Tôi đã viết một tập lệnh nhỏ trong bash để phân tích cú pháp các tệp được cung cấp hoặc stdin nếu không có tệp nào được cung cấp để tạo ra một số đầu ra. Cách tốt nhất để chuyển hướng đầu ra được phân tích cú pháp tới stdout (ở cuối tập lệnh, kết quả được lưu trữ trong một biến) là gì. Tôi có nên sử dụng cat hoặc echo hoặc có phương pháp ưu tiên khác không?Shell scripting: cat vs echo cho đầu ra

Trả lời

9

Sử dụng lệnh printf:

printf '%s\n' "$var" 

echo là ok đối với trường hợp đơn giản, nhưng nó có thể cư xử kỳ quặc cho các đối số nhất định. Ví dụ: echo có tùy chọn -n yêu cầu không in dòng mới. Nếu $var xảy ra là -n, thì

echo "$var" 

sẽ không in bất kỳ thứ gì. Và có một số phiên bản khác nhau của echo (hoặc được tích hợp vào các vỏ khác nhau hoặc như /bin/echo) với các hành vi khác nhau một cách tinh tế.

+1

+1. lời khuyên này nên được nhìn thấy thường xuyên hơn –

3

echo là cách tốt để thực hiện. Bạn sẽ phải nhảy qua một vài vòng nếu bạn muốn cat hoạt động.

3

echo. Bạn có dữ liệu được phân tích cú pháp của mình trong một biến, vì vậy chỉ cần echo "$var" sẽ ổn thôi. mèo được sử dụng để in nội dung của các tập tin, mà không phải là những gì bạn muốn ở đây.

+0

Đây là một điểm quan trọng – niagr

Các vấn đề liên quan