Tôi không được đào tạo trong Linux, nhưng tôi có thể lộn xộn thông qua một số tra cứu tài liệu, nhưng tôi bị bối rối.Shell: "a -lt b" không có nghĩa là true nếu a nhỏ hơn b?
Tôi tìm thấy tập lệnh giúp đặt ngày trên bộ định tuyến dd wrt khi khởi động, nhưng chỉ khi ngày hiện tại nhỏ hơn ngày được lưu trữ. Tôi có thể chia sẻ toàn bộ kịch bản nếu bạn muốn, nhưng nó tóm lại tuyên bố này không đánh giá đúng khi tôi mong đợi nó. Tôi đang đặt các chữ cái vào, thay vì các biến, và nó vẫn không trả lại đúng, nó thực thi câu lệnh "else":
if [ 021715402012 -lt 021815402012 ]
then
echo "the first seems less than the second"
else
echo "the first does not seem less than the second for some reason"
fi
Tôi mong đợi "lần đầu tiên có vẻ nhỏ hơn giây" nhưng điều này không phải là trường hợp ... Đây có phải là sự cố tràn không? Tôi cố gắng để làm cho nó một chuỗi so sánh như thế này:
if [ x021715402012 -lt x021815402012 ]
và cố gắng đặt nó trong dấu ngoặc kép:
if [ "x021715402012" -lt "x021815402012" ]
nó luôn luôn thực thi khác. Có "a -lt b
" không có nghĩa là true nếu a nhỏ hơn b?
Bất kỳ thông tin chi tiết nào về điều này đều sẽ được đánh giá cao, tôi bị bối rối!
Hoạt động tốt trong 'bash' trên máy Mac của tôi. – kindall
Hmm nó in "đầu tiên có vẻ ít hơn thứ hai" đối với tôi khi tôi kiểm tra ví dụ của bạn. Phiên bản bash hay sh là gì? Nếu bạn muốn biết thêm thông tin về -lt, bạn có thể kiểm tra 'help test',' help ['hoặc' man test'. –
Cũng hoạt động tốt trên bộ định tuyến openwrt của tôi. Nhưng tôi rõ ràng có một thực hiện khác nhau mà bạn làm, bởi vì tôi cung cấp cho "số lượng xấu" với 'x' bao gồm. –