2012-01-19 67 views
9

Tôi biết rằng đây là một số loại vấn đề nhân vật đặc biệt nhưng tôi không biết làm thế nào để giải quyết nó.echo trong shell -n không được in đúng điều

tôi gõ vào console

echo "-n" 

và không có gì được in :(

Tôi cũng đã cố gắng với

echo -e "-n" 

để thực hiện ký tự đặc biệt (một trong những thoát khỏi chuỗi) nhưng một lần nữa không có gì happend

làm cách nào tôi có thể in "-n"?

+2

ấn tượng mà tôi đã không bao giờ chạy ngang qua vấn đề này. Tốt nhất! – wallyk

Trả lời

5

Dưới đây là một cách:

[email protected]:~$ echo -e '\x2dn' 
-n 

Nó thoát khỏi sự - như \x2d.

Một cách tiết hơn là in hai nhân vật riêng biệt:

[email protected]:~$ echo -n -; echo n 
-n 

Ở đây, -n chỉ thị đầu tiên echo để không in một dòng mới; nó không liên quan đến -n đang được in. :)

+0

Định nghĩa tiếng vang POSIX không đảm bảo điều này hoạt động. Trong thực tế, bất kỳ việc thực thi nào mà 'echo -e' không in' -e' trên đầu ra của nó là vi phạm tiêu chuẩn, theo đó '-n' là tùy chọn cho phép duy nhất [và, trong khi cho phép, không được xác định rõ ràng:' echo -n' chỉ đơn giản là làm cho đầu ra không xác định, do đó không còn cần thiết để phù hợp với bất kỳ đặc tả cụ thể nào]. –

+0

Trong bash, 'shopt -s xpg_echo' làm cho các tiêu chuẩn' echo' tuân thủ khi 'set -o posix' cũng được bật, nghĩa là hack' echo -e' được đưa ra ở đây sẽ không hoạt động nữa. –

11

Hãy thử

printf "%s\n" -n 

hoặc

printf "%s\n" '-n' 
+2

Có, 'printf' mạnh hơn và nhất quán hơn' echo'. –

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