Các mã sau đây mô tả tốt nhất tình hình. Tại sao dòng cuối cùng không xuất ra char mới dòng cuối? Đầu ra của mỗi dòng được hiển thị trong bình luận. Tôi đang sử dụng GNU bash, phiên bản 4.1.5
echo -n $'a\nb\n' | xxd -p # 610a620a
x=$'a\nb\n' ; echo -n "$x" | xxd -p # 610a620a
echo -ne "a\nb\n" | xxd -p # 610a620a
x="$(echo -ne "a\nb\n")" ; echo -n "$x" | xxd -p # 610a62
tmp=$(somecommand; echo a)
... Điều này chắc chắn đã dẫn điểm về nhà ... Cho đến khi tôi nhìn thấy ví dụ này, xu hướng của tôi vẫn sẽ được sử dụng echo -n a
... nhưng, tất nhiên!, Không cần các -n
, vì lệnh Thay sẽ loại bỏ các newline trailing giới thiệu trong mọi trường hợp! ... cảm ơn ...
tmp=$(somecommand; echo a); tmp=${tmp%a}