Tôi không thể nhận được printf
để in biến có% e descriptor trong tập lệnh bash. Nó sẽ chỉ nóiLỗi không thể giải thích trong bash: lệnh printf bên trong tập lệnh trả về "số không hợp lệ"
#!/bin/bash
a=14.9
printf %e 14.9;
Tôi biết đây có thể là một câu hỏi rất dễ, nhưng tôi khá mới để bash và luôn sử dụng echo
. Thêm vào đó, tôi không thể tìm thấy câu trả lời ở đâu cả.
khi chạy tôi nhận được
$ ./test.text
./test.text: line 3: printf: 14.9: invalid number
0,000000
do đó vấn đề của tôi là LC_NUMERIC biến ngôn ngữ: nó được thiết lập để tôi sử dụng dấu phẩy như dải phân cách thập phân. Thật vậy, nó được đặt thành nội địa hóa châu Âu:
$ locale | grep NUM
LC_NUMERIC="it_IT.UTF-8"
Tôi nghĩ rằng tôi đặt nó thành en_US.UTF-8, nhưng rõ ràng là không. Bây giờ vấn đề chuyển đổi để tìm cách thiết lập biến miền địa phương của tôi. Chỉ cần sử dụng
$ LC_NUMERIC="en_US.UTF-8"
sẽ không hoạt động.
Bạn nhận được gì? Hoạt động tốt hơn ở đây ... –
Trong khi mã hoạt động tốt ở đây (kết quả 1.490000e + 01), trang này http://linuxconfig.org/bash-printf-syntax-basics-with-examples chỉ ra rằng% e có thể/nên được đặt bên trong dấu ngoặc kép. I. printf "% e" 14.9; – enhzflep
@enhzflep: thankyou, nhưng vấn đề không phải vậy. Bạn không cần đặt các đối số của printf trong dấu ngoặc kép, trừ khi các đối số không cần nó. Bên cạnh đó nó hoạt động mà không có họ anyway. Tôi có thể đặt biến với $ xuất LC_NUMERIC = "en_US.UTF-8" nhưng điều này là không có hiệu quả. Làm thế nào tôi có thể làm cho nó vĩnh viễn? Tôi chạy Cygwin. –