Score:0

วิธีเขียนเชลล์สคริปต์ที่จะโหลดเทอร์มินัลซ้ำที่กึ่งกลางของสคริปต์แล้วเริ่มใช้คำสั่งอีกครั้ง

ธง pk

ฉันเพิ่งรู้เรื่อง sdkman ใน gitpod.io และฉันต้องการติดตั้งจาวาเวอร์ชันต่างๆ โดยใช้ตัวจัดการนี้ แต่ฉันมี sdkman เวอร์ชันเก่ามาก นั่นคือฉันต้องอัปเดตจากนั้นติดตั้งจาวา แต่ฉันไม่ต้องการพิมพ์คำสั่งนี้ในทุกที่เก็บใน gitpod นั่นเป็นเหตุผลที่ฉันเขียนเชลล์สคริปต์ prerequisites.sh และฉันจะใช้ไฟล์นี้ในทุกที่เก็บ สคริปต์คือ:-

อัปเดต sdk
sdk ติดตั้งจาวา 17-เปิด

# มีคำสั่งมากมายภายใต้สิ่งนี้ แต่ไม่จำเป็นในคำถามนี้

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

อัปเดต sdk
exec bash #recently added แต่ไม่ได้รันคำสั่งหลังจากนั้น :(
sdk ติดตั้งจาวา 17-เปิด
rajin100000 avatar
pk flag
จะช่วยได้อย่างไร??
Score:0
ธง cn

ปัญหาที่คุณพบคือเมื่อคุณเปิดเชลล์ใหม่หรือรีสตาร์ทเชลล์ปัจจุบัน สคริปต์ของคุณจะไม่ถูกโหลดในเชลล์ใหม่อีกต่อไป ดังนั้นสิ่งที่คุณต้องทำคือ:

  1. เปิดพาเรนต์เชลล์
  2. ดำเนินการคำสั่งแรก
  3. สร้างเปลือกย่อยภายในสคริปต์หลัก
  4. เชลล์ลูกนี้จะถูกโหลดด้วยพารามิเตอร์สภาพแวดล้อมใหม่
  5. ดำเนินการคำสั่งที่สองภายในเปลือกลูก
  6. ออกจากเชลล์ย่อย
  7. ออกจากพาเรนต์เชลล์

สำหรับคำสั่งที่กล่าวมาคุณสามารถใช้สิ่งนี้ได้

#!/bin/bash
อัปเดต sdk
sudo su - $USER -c 'sdk ติดตั้งจาวา 17-เปิด'

คำสั่งแรกจะทำงานในพาเรนต์เชลล์ บรรทัดที่สอง (ที่มี sudod su - $USER) จะเปิดเชลล์ลูกใหม่ภายในสคริปต์เดียวกัน และรันคำสั่งที่สอง

PS: ระบบจะขอให้คุณป้อนรหัสผ่าน หากคุณยังไม่ได้กำหนดค่า "NOPASSWD" สำหรับ sudo ตรวจสอบ นี้ เพื่อตั้งค่านั้น

โพสต์คำตอบ

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