Làm thế nào để tránh không gian sau biến bash trong chuỗi?


17

Tôi có một biến cho màu sắc. Tôi sử dụng nó để đặt màu cho chuỗi, bằng cách đánh giá nó bên trong chuỗi. Tuy nhiên, tôi cần bao gồm khoảng trắng sau tên (để tên không chứa một phần của văn bản). Điều này đôi khi có vẻ xấu.

Làm thế nào tôi có thể tránh sử dụng (in) không gian này?

Ví dụ (Hãy nói điều đó Red=1NC=2):

echo -e "$Red Note: blabla$NC".

Đầu ra:

1 Note: blabla2.

Sản lượng dự kiến:

1Note: blabla2.

Câu trả lời:



4

Những gì bạn nên tập thói quen sử dụng là printf:

printf '%sNote: blabla%s\n' "$Red" "$NC"

Trường hợp mỗi %sthay thế một biến. Và điều -enày là không cần thiết vì printf chấp nhận các giá trị dấu gạch chéo ngược \ n, \ t, v.v. theo cách di động.

Hãy nhớ rằng echo -enó không thể di chuyển đến các vỏ khác.

Sự lựa chọn khác:

Bạn có thể sử dụng hai lệnh nối đầu ra của chúng:

echo -ne "$Red"; echo -e "Note: blabla$NC"

Bạn có thể sử dụng nối chuỗi đơn giản:

echo -e "$Red""Note: blabla$NC"

Hoặc bạn có thể sử dụng { }để tránh nhầm lẫn tên văn bản:

echo -e "${Red}Note: blabla$NC"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.