ฉันพยายามใช้สตริงย่อยของ bash ในตัวเพื่อแทนที่เอาต์พุตของ subshell หรือฟังก์ชัน bash อื่น
คำสั่งต่อไปนี้ทำงานได้ค่อนข้างดีใน zsh; แต่ส่งผลให้เกิดbad substitutionข้อผิดพลาดในทุบตี:
${${PWD##*/}//trunk/latest}
หรือ
${$(basename $PWD)//trunk/latest}
ผลลัพธ์ควรเป็นโฟลเดอร์สุดท้ายของ$PWD, แทนที่ด้วยlatestเมื่อไดเรกทอรีปัจจุบันของฉันคือtrunk
ดังนั้น/home/user/trunkควรเป็นlatest
มีการทุบตีเทียบเท่าอนุญาตให้สายโซ่รุ่นโดยไม่ต้องอาศัยตัวแปรหรือท่อ? หรือ bash บิวด์อินอนุญาตให้อินพุตเป็นสตริงหรือตัวแปรธรรมดาเท่านั้น?
sedในไม่กี่ขั้นตอน แต่ฉันไม่เข้าใจว่าทำไมทุบตีปฏิเสธที่จะดำเนินการ subshell แล้วแทนที่เนื้อหาของมันเช่นสายอื่น ๆ