Điểm:-1

expr: lỗi cú pháp: đối số không mong muốn âDesktopâ

lá cờ it

Đây là tập lệnh bash của tôi để chuyển đổi nhiệt độ đầu vào từ độ C sang độ F.

#!/bin/bash
echo "Nhập nhiệt độ theo độ C: "
đọc độ c
temp=$(expr $celsius * 9/5 + 32 )
echo "Nhiệt độ tính bằng độ F: $temp"

Tôi nhận được thông báo lỗi này:

expr: lỗi cú pháp: đối số không mong muốn âDesktopâ

Bạn có giải pháp nào không?

Someone avatar
lá cờ my
Phiên bản Ubuntu của bạn là gì? Xin vui lòng bạn có thể [chỉnh sửa] và thêm một số thông tin
Someone avatar
lá cờ my
Câu hỏi này có vấn đề nghiêm trọng về định dạng hoặc nội dung. Câu hỏi này khó có thể cứu vãn được thông qua chỉnh sửa và có thể cần phải xóa
karel avatar
lá cờ sa
Văn bản của tập lệnh bash trong câu hỏi đã được sao chép vào câu trả lời của tôi cho câu hỏi này.
Điểm:2
lá cờ hr

Các * biểu tượng là một ký tự shell glob (tạo tên tệp), nó sẽ mở rộng thành danh sách các tệp không ẩn trong thư mục hiện tại - trong trường hợp của bạn, có vẻ như bao gồm một máy tính để bàn mục.

Để ngăn chặn điều đó, bạn cần tắt trình bao toàn cầu, sử dụng đặt -f hoặc đặt -o noglob:

#!/bin/bash
đặt -f
echo "Nhập nhiệt độ theo độ C: "
đọc độ c
temp=$(expr "$celsius" * 9/5 + 32 )
echo "Nhiệt độ tính bằng độ F: $temp"

hoặc trích dẫn hoặc thoát khỏi * ký tự để làm cho nó theo nghĩa đen:

#!/bin/bash
echo "Nhập nhiệt độ theo độ C: "
đọc độ c
temp=$(expr "$celsius" \* 9 / 5 + 32 )
echo "Nhiệt độ tính bằng độ F: $temp"

Trong cả hai trường hợp, bạn nên tập thói quen trích dẫn kép các phần mở rộng trình bao như $c, để ngăn việc mở rộng trình bao và phân tách từ (đặc biệt là khi chúng chứa đầu vào tùy ý của người dùng).

Điểm:1
lá cờ sa

Đã sửa tập lệnh bash để chuyển đổi nhiệt độ đầu vào từ độ C sang độ F bằng cách sử dụng phổ biến bc chương trình đầu cuối thay vì expr trong dòng 4:

#!/bin/bash
echo "Nhập nhiệt độ theo độ C: "
đọc độ c
temp=`echo "scale=1; $celsius*1.8 + 32" | bc` 
echo "Nhiệt độ tính bằng độ F: $temp"

bc đối với "máy tính cơ bản" là ngôn ngữ máy tính chính xác tùy ý. bc trực quan và dễ sử dụng hơn rất nhiều so với làm việc vụng về và dò dẫm với một expr lỗi cú pháp. Giá trị của tỉ lệ hàm là số chữ số sau dấu thập phân trong biểu thức.

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