Score:1

คำสั่ง " which " ส่งออกไปยังตัวแปรไม่ทำงาน

ธง cg

ฉันเป็นเพียงผู้เริ่มต้นที่การเขียนสคริปต์ทุบตี ฉันพยายามบันทึกผลลัพธ์จากคำสั่ง "ซึ่ง" ลงในตัวแปรและพิมพ์ออกมา แต่ตัวแปรไม่แสดงอะไรเลย นี่คือรหัสที่ฉันลอง:

#!/bin/bash
OUTPUT="$(ซึ่งขด)"
เสียงสะท้อน "${OUTPUT}"

เอาท์พุต:

user@user:~$ ทุบตี new.sh

ผู้ใช้@ผู้ใช้:~$

นอกจากนี้ยังใช้งานได้เมื่อฉันเรียกใช้ในเทอร์มินัล

user@user:~$ OUTPUT="$(ซึ่งขด)"
เสียงสะท้อน "${OUTPUT}"

ไม่พบขด
ผู้ใช้@ผู้ใช้:~$

แต่ประเด็นคือมันใช้งานได้กับคำสั่งอื่นๆ

#!/bin/bash
OUTPUT="$(วันที่)"
เสียงสะท้อน "${OUTPUT}"

เอาท์พุต:

user@user:~$ ทุบตี new.sh
ส. 07 ส.ค. 2564 13:41:37 น. +0545
ผู้ใช้@ผู้ใช้:~$
bac0n avatar
cn flag
ยังสงสัยอยู่เล็กน้อย ข้อเท็จจริงที่ว่าข้อความแสดงข้อผิดพลาดที่คุณป้อนไม่ได้มาจาก 'อันไหน' มันไม่ควรให้ข้อความใด ๆ เลย จริง ๆ แล้วหากไม่มี curl เช่น
Sammy1410 avatar
cg flag
ผลลัพธ์ที่ได้คือ "curl " เมื่อพบและให้ "ไม่พบ curl" หากไม่ได้ติดตั้ง แต่ผลลัพธ์หลังจะเห็นในเทอร์มินัลเท่านั้น แต่ไม่เห็นขณะใช้ตัวแปรเชลล์
bac0n avatar
cn flag
ถ้าไม่ได้ติดตั้ง curl เช่น ถ้าไบนารีไม่มีอยู่ ก็ไม่ควรพิมพ์ข้อความใดๆ เลย คุณสามารถเปิด "อันไหน" ในโปรแกรมแก้ไขข้อความ ซึ่งเป็นเชลล์สคริปต์ที่เรียบง่าย ข้อความ "ไม่พบ curl" ต้องมาจากที่อื่น (และหากมี curl ก็ควรจะคืนค่าพาธ ไม่ใช่ `curl` )
Sammy1410 avatar
cg flag
ใช่ดูเหมือนว่ามันนี่เป็นเพียงโค้ดส่วนเล็กๆ ที่ฉันพยายามใส่ในคำสั่ง if ฉันพบว่าคำสั่ง ``` which``` ส่งคืนข้อมูลบูลีนที่ฉันสามารถใช้ได้ ขอบคุณที่ช่วย ในที่สุดรหัสของฉันก็ทำงานตามที่คาดไว้
Sammy1410 avatar
cg flag
และขออภัยความผิดพลาดของฉัน ``` ซึ่งส่งคืนเส้นทางไม่ใช่เวอร์ชัน ฉันเข้าใจผิดกับคำสั่งอื่น
Score:4
ธง cn

ตัวแปรจะรับค่าที่ส่งผ่าน STDOUT หรือเอาต์พุตสตรีมเท่านั้น เนื่องจากไม่พบ curl ผลลัพธ์ที่คุณเห็นคือข้อความแสดงข้อผิดพลาดที่ส่งผ่าน STDERR หรือสตรีมข้อผิดพลาด หากคุณต้องการเก็บข้อความแสดงข้อผิดพลาดไว้ในตัวแปรในกรณีที่เกิดข้อผิดพลาด ให้ทำดังต่อไปนี้:

OUTPUT="$(ซึ่งขด 2>&1)"

สิ่งนี้นำข้อมูลทั้งหมดจาก STDERR ไปยัง STDOUT 2 เป็นตัวอธิบายไฟล์สำหรับ STDERR และ 1 เป็นตัวอธิบายไฟล์สำหรับ STDOUT

Sammy1410 avatar
cg flag
ฉันลองแล้ว แต่ผลลัพธ์ก็ยังเหมือนเดิม
Sammy1410 avatar
cg flag
ตามที่ผู้ใช้ bac0n แนะนำ ```ซึ่ง``` ไม่ได้ให้เอาต์พุตใด ๆ ที่สามารถจัดเก็บได้เมื่อไม่พบแพ็คเกจ ฉันต้องไปทางอื่นเพื่อให้รหัสหลักของฉันทำงาน

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา