Điểm:0

Trong khi $value != [a..b]

lá cờ in

Tôi đang cố gắng viết một hàm viết lại một giá trị theo lựa chọn của người dùng. Cho đến nay nó trông như thế này:

while [[ $code_id != [1-28] ]]; làm
echo "Vui lòng chọn một giá trị..."
tiếng vang "1. A"
tiếng vang "2. B"
tiếng vang "3. C"
tiếng vang "4. D"
...
tiếng vang "28. Z"
xong
echo "THÔNG TIN: Mã là $code_id."

Người dùng nên viết một số đã chọn (1-28). Nhưng kết quả là, mã trả về cho tôi, để lựa chọn. Tôi hiểu lý do nào trong một điều kiện (trong khi... làm), nhưng tôi nên viết mã này như thế nào để mã của mình hoạt động?

lá cờ hr
Chính xác thì bạn đang cố gắng làm gì ở đây? (1) bạn không bao giờ gán giá trị cho `code_id` và (2) `[1-28]` chỉ khớp với các chữ số 1,2 và 8 - đó không phải là một dãy số từ 1 đến 28. Có lẽ bạn đang tìm kiếm [ chọn vòng lặp](https://askubuntu.com/a/1716/178692)?
lá cờ cn
Bạn có 28 chữ cái trong bảng chữ cái của bạn?
Bruyi avatar
lá cờ in
@Rinzwind tôi có hơn 10 chữ cái, số có 1 hoặc 2 chữ số trong một số: nếu tôi tạo một phạm vi `$code_id = [1-9]` tôi có thể chuyển sang giai đoạn tiếp theo, nhưng một giai đoạn khác (`[ 1-10]`, ví dụ) - giai đoạn này lặp lại.
Điểm:3
lá cờ cn

Đây là một giải pháp khả thi sử dụng vòng lặp vô hạn được ngắt có điều kiện bên trong.

#!/bin/bash

trong khi đúng
làm
  đọc -p "Nhập giá trị: " giá trị

  if [[ $value =~ ^[0-9]{1,2}$ ]] && ((giá trị <= 28)); sau đó phá vỡ; fi
  # nó là số có một hay hai chữ số và nếu đúng thì nó nhỏ hơn hay bằng 28?
xong

echo "Giá trị là: ${value}"

Phạm vi trong các biểu thức chính quy không hoạt động như trong toán học. Hãy nghĩ về các phạm vi ở đây như phạm vi của các ký tự liên tiếp từ bảng ASCII. Vì vậy, bộ ký tự [1-28] bao gồm 1, 28.

Đây là một ví dụ khác. bộ ký tự [a-dz] bao gồm các ký tự từ phạm vi a-d, đó là một, b, c, đ, và nhân vật z.

Trong bài kiểm tra có điều kiện thực hiện của Bash [[, khi mà =~ toán tử được sử dụng, chuỗi ở bên phải của toán tử được so khớp như một biểu thức chính quy.

Điểm:2
lá cờ in

Có vẻ như bạn muốn sử dụng Bash's lựa chọn được xây dựng trong:

chọn code_id trong {A..Z}; làm
    [[ -z $code_id ]] || nghỉ
xong
echo "THÔNG TIN: Mã là ${code_id}."

Đầu ra:

1) A 3) C 5) E 7) G 9) I 11) K 13) M 15) O 17) Q 19) S 21) U 23) W 25) Y
2) B 4) D 6) F 8) H 10) J 12) L 14) N 16) P 18) R 20) T 22) V 24) X 26) Z
#? 6
THÔNG TIN: Mã là F.

Bạn có thể muốn giới hạn CỘT ví dụ.:

CỘT = 1
chọn code_id trong {A..Z}; làm
    [[ -z $code_id ]] || nghỉ
xong
echo "THÔNG TIN: Mã là ${code_id}."

Đầu ra:

 1) Một
 2)B
 3)C
 4) D
 5) E
 6) F
 7) G
 8 GIỜ
 9) Tôi
10) J
11) K
12) L
13) M
14) Không
15) Ôi
16)P
17) Hỏi
18) R
19) S
20)T
21) Bạn
22)V
23) W
24)X
25) Có
26) Z
#? 17
THÔNG TIN: Mã là Q.
Điểm:0
lá cờ in

Giải pháp là thay đổi một điều kiện thành trong khi [[ $rep_id -le 0 || $rep_id -ge 13 ]]; làm...

Đă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.