Điểm:1

Đầu ra lệnh "cái nào" thành một biến không hoạt động

lá cờ cg

Tôi chỉ là người mới bắt đầu viết kịch bản bash. Tôi đã cố gắng lưu đầu ra từ lệnh " which" vào một biến và in ra nhưng biến đó không hiển thị gì cả. Đây là mã mà tôi đã thử:

#!/bin/bash
OUTPUT="$(cuộn tròn)"
tiếng vang "${OUTPUT}"

Đầu ra:

user@user:~$ bash new.sh

người dùng@người dùng:~$

Điều này cũng hoạt động khi tôi chạy nó trong thiết bị đầu cuối.

user@user:~$ OUTPUT="$(cuộn cái nào)"
tiếng vang "${OUTPUT}"

không tìm thấy cuộn tròn
người dùng@người dùng:~$

Nhưng vấn đề là nó hoạt động với các lệnh khác.

#!/bin/bash
OUTPUT="$(ngày)"
tiếng vang "${OUTPUT}"

Đầu ra:

user@user:~$ bash new.sh
Thứ bảy 07 Tháng tám 2021 01:41:37 PM +0545
người dùng@người dùng:~$
bac0n avatar
lá cờ cn
Vẫn còn một chút tò mò, thực tế là thông báo lỗi bạn đã nhập không thể đến từ ` which`, nó thực sự không đưa ra bất kỳ thông báo nào nếu, ví dụ: curl không tồn tại?
Sammy1410 avatar
lá cờ cg
Chà, đầu ra là "cuộn " khi nó được tìm thấy và nó báo "không tìm thấy cuộn tròn" nếu không được cài đặt. Nhưng đầu ra sau chỉ được nhìn thấy trong thiết bị đầu cuối chứ không phải trong khi sử dụng các biến shell.
bac0n avatar
lá cờ cn
nếu curl không được cài đặt, e.i., nếu tệp nhị phân không tồn tại, nó sẽ không in bất kỳ thông báo nào. Bạn có thể mở ` which` trong trình soạn thảo văn bản, đó là một tập lệnh shell rất đơn giản, thông báo "không tìm thấy cuộn tròn" phải đến từ một nơi khác. (và nếu curl tồn tại, nó sẽ trả về đường dẫn, không phải `curl` )
Sammy1410 avatar
lá cờ cg
Có vẻ như nó.Đây chỉ là một đoạn mã nhỏ mà tôi đang cố gắng đưa vào câu lệnh if. Chà, tôi đã tìm thấy lệnh ``` which``` trả về dữ liệu boolean mà tôi có thể sử dụng. Cảm ơn vì sự giúp đỡ. Cuối cùng, mã của tôi đang chạy như mong đợi.
Sammy1410 avatar
lá cờ cg
Và xin lỗi, lỗi của tôi ``` which``` đã trả về đường dẫn không phải phiên bản. Tôi đã nhầm nó với các lệnh khác.
Điểm:4
lá cờ cn

Biến chỉ chấp nhận giá trị được gửi qua STDOUT hoặc luồng đầu ra. Vì không thể tìm thấy curl nên kết quả bạn đang thấy là một thông báo lỗi được gửi qua STDERR hoặc luồng lỗi. Nếu bạn muốn lưu thông báo lỗi trong biến phòng trường hợp xảy ra lỗi, hãy làm như sau:

OUTPUT="$(cuộn tròn 2>&1)"

Điều này hướng tất cả dữ liệu từ STDERR sang STDOUT. 2 là bộ mô tả tệp cho STDERR và 1 là bộ mô tả tệp cho STDOUT.

Sammy1410 avatar
lá cờ cg
Tôi đã thử nhưng kết quả vẫn vậy.
Sammy1410 avatar
lá cờ cg
Như người dùng bac0n đã đề xuất ``` which``` không cung cấp bất kỳ đầu ra nào có thể lưu trữ được khi không tìm thấy gói. Tôi đã phải đi theo cách khác để mã chính của mình hoạt động.

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