Điểm:0

Bash từ đầu --again

lá cờ cn

Khi cuộc hành trình của tôi qua Bash tiếp tục, tôi vẫn bị mắc kẹt với những thứ lố bịch chẳng hạn như kịch bản này mà tôi không thể hiểu nổi:

#!/bin/bash

nếu [ $1 -gt 100 ]
sau đó
   echo "Bạn đã nhập số lớn hơn"
   nếu (( $1 % 2 == 0 ))
   sau đó
      echo "Và nó là số chẵn"
fi

Gần đây, tôi được khuyên nên để ShellCheck trong tầm tay, và tôi đã làm như vậy, nhưng có vẻ như các đề xuất của nó về cách cải thiện tập lệnh này cũng không hiệu quả. Về cơ bản khi tôi cố chạy nó, tôi luôn gặp lỗi như "[: !=: toán tử đơn nguyên dự kiến" ngay cả khi tôi cố trích dẫn $1 thành "$1", điều này cũng được ShellCheck khuyến nghị. Ai có thể giúp tôi xuống? Cảm ơn rất nhiều trước!

terdon avatar
lá cờ cn
Làm thế nào để bạn chạy này? Trước hết, bạn không thể gặp lỗi mà bạn đã đề cập vì bạn không có `!=` ở bất kỳ đâu trong tập lệnh của mình. Thứ hai, bạn đang thiếu dấu `if` đóng, điều đó có nghĩa là bạn sẽ gặp một lỗi khác. Thứ ba, có thể bạn đang chạy tập lệnh mà không có đối số nên `$1` không được xác định. Nhưng xin đừng bắt chúng tôi phải đoán: [chỉnh sửa] câu hỏi của bạn và đảm bảo rằng bạn hiển thị mã thực tế mà bạn sử dụng, giải thích cách bạn khởi chạy mã đó và các lỗi thực tế mà bạn gặp phải.
Điểm:2
lá cờ cn
raj

Tập lệnh của bạn có lỗi cú pháp; nó thiếu một cái nữa fi cuối cùng. Khi lỗi này được khắc phục, bạn sẽ nhận được "toán tử đơn nguyên như mong đợi", bởi vì $1 giá trị (giá trị của tham số đầu tiên của tập lệnh) trống và giá trị đầu tiên nếu lệnh hy vọng giá trị đó không trống. Bạn phải gọi tập lệnh với một số số làm tham số, như:

./tập lệnh 150

Sau đó, bạn nhận được phản hồi:

Bạn đã nhập một số lớn hơn
Và nó thậm chí là một số chẵn

Nếu bạn muốn tập lệnh không hiển thị thông báo lỗi khi được gọi mà không có tham số, trước khi sử dụng tham số, bạn phải phát hiện xem tham số có trống không và thực hiện điều gì đó. Ví dụ: bạn có thể thêm mã sau vào trước mã đầu tiên của mình nếu chỉ huy:

nếu [ -z "$1" ]
sau đó
   echo "Tham số bắt buộc!"
   lối ra
fi

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.