2009-08-02 41 views
11

Tôi đang chỉnh sửa người khác kịch bản và tôi thấy anh/cô ta đã sử dụng \c này rất thường xuyên nhưSử dụng c trong kịch bản shell

echo "bla bla \c" 

mà khi sử dụng chỉ đơn giản in

bla bla \c 

trên màn.

Vì vậy, tôi đã tự hỏi tại sao sử dụng nó hoặc có thể là tôi đang thiếu một cái gì đó, bởi vì nó không làm gì cả? Tôi đã kiểm tra các nhân vật trốn thoát và tôi cũng không tìm thấy bất kỳ thứ gì như vậy. Có sử dụng đặc biệt \ c trong các kịch bản shell, chủ yếu trong các shell bash và korn không?

Trả lời

22

Các \ c giữ con trỏ trên cùng một dòng sau khi kết thúc các tiếng vang, nhưng để kích hoạt nó, bạn cần phải cờ-e:

echo -e "bla bla \c" 
8

Tôi nghĩ rằng nỗ lực là để chấm dứt tiếng vang mà không có một dòng mới.

Nếu nó không hoạt động trên hệ thống của bạn, bạn có thể thay thế bằng cách này,

echo "test \c"; echo " same line" 

có thể trở thành,

echo -n "test"; echo " same line" 

Một thay đổi dễ dàng hơn sẽ được (theo đề nghị của Neil, 1 có),

echo -e "test \c"; echo " same line" 
+4

Sử dụng printf dễ di động hơn echo-n. –

+0

@William, tôi hoàn toàn đồng ý. Tuy nhiên, khi bạn đang chuyển kịch bản, một mẹo ngắn như '-e' hoặc' -n' hoạt động nhanh hơn. – nik

1

Không ngắt dòng tự động, apparently:

sử dụng trong Shells UNIX

vỏ

UNIX Korn sử dụng ký tự \ c thoát để báo hiệu sự tiếp nối (không ngắt dòng tự động):

echo "Nhập đường dẫn đến tập tin dữ liệu: \ c"

0

Thực tế, hành vi của 'echo' thay đổi tùy theo vỏ được sử dụng.
Với vỏ Bourne đơn giản, '\ c' sẽ được diễn giải theo mặc định (do đó con trỏ vẫn ở trên dòng).
Với Bash, nó không được hiểu theo mặc định (vì vậy chuỗi '\ c' được hiển thị), vì vậy bạn phải thêm tùy chọn '-e' để bật nó.

2

POSIX bang rằng:

\ c Suppress các < newline> mà nếu không sau đối số cuối cùng trong đầu ra. Tất cả các ký tự theo sau '\ c' trong đối số sẽ bị bỏ qua.

Về cơ bản một POSIX XSI-tuân thủ QTI echo tiện ích nên thoát ra khi nó tìm thấy một \ c, như là rõ ràng từ các lệnh sau:

echo -e "foo bar \c baz" "quux" 
0

TÊN echo - hiển thị một dòng văn bản

ĐẠI DIỆN echo [SHORT-OPTION] ... [STRING] ... echo LONG-OPTION

MÔ TẢ Echo (các) STRING thành đầu ra tiêu chuẩn.

-n  do not output the trailing newline 

    -e  enable interpretation of backslash escapes 

    -E  disable interpretation of backslash escapes (default) 

    --help display this help and exit 

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