Tôi bắt đầu tìm hiểu về cách viết tập lệnh cho thiết bị đầu cuối bash, nhưng tôi không thể tìm ra cách để so sánh hoạt động đúng cách. Tôi chắc rằng điều này rất cơ bản đối với nhiều người trong số các bạn, tôi dường như không thể tìm ra câu trả lời cho câu hỏi của mình ở bất cứ đâu (hoặc ít nhất tôi không chắc chắn nên tìm kiếm gì). Các kịch bản tôi đang sử dụng là:So sánh các số trong Bash
echo "enter two numbers";
read a b;
echo "a=$a";
echo "b=$b";
if [ $a \> $b ];
then
echo "a is greater than b";
else
echo "b is greater than a";
fi;
Tôi có vấn đề là nó so sánh số từ chữ số đầu tiên trên, tức là 9 lớn hơn 10000, nhưng 1 là lớn hơn 09. Làm thế nào tôi có thể chuyển đổi số vào một loại để làm một so sánh thực sự?
đọc cơ bản: [BashFAQ] (http : //mywiki.wooledge.org/BashFAQ) –
BTW, trong bash một dấu chấm phẩy là một dấu tách câu lệnh, không phải là một dấu kết thúc câu lệnh, mà là một dòng mới. Vì vậy, nếu bạn chỉ có một câu lệnh trên một dòng thì ';' ở cuối dòng là thừa. Không làm hại gì, chỉ là một sự lãng phí các thao tác gõ phím (trừ khi bạn * thích * gõ dấu chấm phẩy). – cdarke
Để buộc các số có số 0 đứng đầu thành số thập phân: '10 # $ number' để' số = 09; echo "$ ((10 # $ number))" 'sẽ xuất' 9' trong khi 'echo $ ((số))' sẽ tạo ra lỗi "giá trị quá lớn đối với cơ sở". –