Score:1

คำสั่ง Python3 ทำงานได้ดีในเทอร์มินัล แต่ไม่ใช่ในสคริปต์ทุบตี

ธง in

ฉันนิ่งงันอย่างแท้จริง

คำสั่งนี้ใช้งานได้ดีอย่างสมบูรณ์ถ้าฉันป้อนที่พรอมต์ของเทอร์มินัลใน Ubuntu 20.04:

python3 -c 'นำเข้า hddcoin.util.bech32m เป็น b; พิมพ์ (b.decode_puzzle_hash ("ที่อยู่ awallet") hex ())'

แต่ถ้าฉันทำคำสั่งเดียวกันในสคริปต์ทุบตี:

PUZZLEHASH=$(python3 -c 'import hddcoin.util.bech32m as b; print(b.decode_puzzle_hash("awalletaddress"). hex())')

ฉันได้รับ "ไม่พบคำสั่ง" ถ้าฉันเปลี่ยน "python3" เป็น "venv/bin/python3" ซึ่งเป็นสิ่งที่ฉันได้รับเมื่อทำ ซึ่ง python3จากนั้นข้อผิดพลาดจะกลายเป็น "ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว" ซึ่งทำให้ฉันคิดว่าตอนนี้ไม่พบสคริปต์หลามที่ฉันพยายามค้นหาด้วย นำเข้า hddcoin.util.bech32m ส่วนหนึ่ง. แต่ในสคริปต์ทุบตีฉันใส่ซีดีลงในไดเร็กทอรีหลักของสคริปต์ไพ ธ อนนั้น

ฉันสามารถตัดและวางคำสั่งตามที่แสดงในข้อความแสดงข้อผิดพลาดในพรอมต์ของเทอร์มินัลได้ และมันก็ทำงานได้ดี

ฉันค้นหาทุกที่และไม่พบใครถามคำถามที่คล้ายกัน การค้นหาทั้งหมดสำหรับ "ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว" จะล้มเหลวเมื่อป้อนในพรอมต์ของเทอร์มินัล ไม่มีใครมีปัญหากับการทำงานได้ดีในเทอร์มินัล แต่ไม่ใช่ในสคริปต์ทุบตีที่ฉันสามารถหาได้

พยายาม shebangs #!/bin/bash และ #!/usr/bin/env bash ไม่ได้ผล (แก้ไข)

Qwinn avatar
in flag
ฉันค่อนข้างแน่ใจว่าคำสั่งที่ไม่พบคือ python3 เอง เพราะการเพิ่ม venv/bin ข้างหน้าจะกำจัดข้อผิดพลาดนั้น และกลายเป็น "ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว" ฉันคิดว่ามันดูเหมือนข้อผิดพลาดทุบตีเช่นกัน แต่ข้อความแสดงข้อผิดพลาดไม่ได้ให้ข้อมูลเพิ่มเติมเกี่ยวกับสิ่งที่อ้างถึง และคุณพูดถูกเรื่องสาวผมม้า ฉันแค่พิมพ์ผิด BTW ฉันได้ลองเพิ่มไดเร็กทอรีพาเรนต์ที่เป็นไปได้ทั้งหมดไปยัง PATH ภายในสคริปต์ ไม่ดี. แต่ไม่เห็นว่ามันจะช่วยได้อย่างไรเนื่องจาก PATH ไม่มีไดเร็กทอรีเหล่านั้นที่เทอร์มินัลพรอมต์และยังใช้งานได้ดี
cn flag
Ray
คุณต้องไปทีละขั้นตอน คุณพิมพ์ 'หลามใด 3' ที่ไหน ในเทอร์มินัลหรือในสคริปต์ของคุณ หากคุณสามารถหา python3 ได้ ให้ลองใช้บรรทัดที่ง่ายกว่าเพื่อทดสอบ - อาจไม่มี `import` ตัวอย่างเช่น "สวัสดีชาวโลก!" ง่ายๆ ด้านบนของสคริปต์ทุบตีของคุณควรมี `#!/bin/bash` เป็นบรรทัดแรก สังเกต `#!/` เป็นอักขระ 3 ตัวแรก...
cn flag
Ray
@JacobVlijm ชี้ไป แต่ก็เป็นการตอบสนองต่อประโยคสุดท้ายที่ระบุว่า "พยายาม shebangs #!bin/bash และ !usr/bin/env bash ไม่ทำงาน" ผิดทั้ง 2 ทาง...
cn flag
Ray
@JacobVlijm อา! ฉันเข้าใจแล้ว ... น่าจะดีกว่าสำหรับ Qwinn ที่จะแก้ไขคำถามเดิม มีข้อมูลมากเกินไปที่ขาดหายไปจากคำถามเดิม และชุดความคิดเห็นที่ยาวจะทำให้ผู้คนไม่พอใจ...
vanadium avatar
cn flag
อย่าลังเลที่จะโพสต์สิ่งที่คุณค้นพบเป็นคำตอบที่นี่ และยอมรับคำตอบของคุณเอง
Score:1
ธง in

อัปเดต:

ขอบคุณสำหรับความช่วยเหลือทุกคน ฉันเข้าใจว่าเกิดอะไรขึ้น สำหรับลูกหลานฉันจะอธิบาย

ความพยายามดั้งเดิมที่แท้จริงของฉันคือ:

PUZZLEHASH=$("python3 -c 'import $FORKNAME.util.bech32m as b; print(b.decode_puzzle_hash(\""$WALLETADDRESS:\"). hex())'")

สิ่งนี้ดูเหมือนจะขยายอย่างถูกต้องโดยมีข้อความแสดงข้อผิดพลาดต่อไปนี้:

/home/qwinn/forktools/forkexplore: บรรทัดที่ 86: python3 -c 'import hddcoin.util.bech32m as b; พิมพ์ (b.decode_puzzle_hash ("awalletaddress") hex ())': ไม่พบคำสั่ง

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

PUZZLEHASHEXEC=$(echo "python3 -c 'import $FORKNAME.util.bech32m as b; print(b.decode_puzzle_hash(\""$WALLETADDRESS"\"). hex())'")

PUZZLEHASH=$(เท่ากับ $PUZZLEHASHEXEC)

eval เป็นกุญแจสำคัญ

อย่างไรก็ตาม ขอขอบคุณทุกท่านที่สละเวลาพยายามช่วยเหลือ!

โพสต์คำตอบ

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