ฉันจะรับรุ่น ksh อย่างปลอดภัยจากภายในสคริปต์ ksh ได้อย่างไร
ฉันได้เห็นวิธีแก้ไขปัญหาต่อไปนี้ :
ksh --version
echo ${.sh.version}
echo $KSH_VERSION
และเมื่อได้รับสถานการณ์ที่เหมาะสมแต่ละงานเหล่านี้ถูกต้อง อย่างไรก็ตามฉันสนใจกรณีที่ไม่สมบูรณ์
โดยเฉพาะมีหลายเครื่องที่ฉันทำงานด้วยที่มีรุ่นเก่ากว่า ksh ที่สำหรับวัตถุประสงค์ของฉันขาดฟังก์ชั่นอย่างรุนแรง อย่างไรก็ตามเหตุผลที่ฉันต้องการตรวจสอบรุ่น (โดยทางโปรแกรม) คือดูว่ารุ่น ksh เป็นหนึ่งในรุ่นที่มีความสามารถน้อยกว่าหรือไม่ และถ้าเป็นเช่นนั้นฉันต้องการรันสาขาด้วยรหัสที่ยอดเยี่ยมน้อยลง
อย่างไรก็ตามในเครื่องที่มีปัญหาความไม่สมบูรณ์ของเชลล์จะขยายไปสู่การตรวจสอบเวอร์ชัน ...
- ถ้าฉันลอง
ksh --version
มันจะพิมพ์ออกมาและเปิดตัวอย่างใหม่ของksh
! หากฉันลอง
echo ${.sh.version}
ให้ksh
ถือว่านี่เป็นข้อผิดพลาดทางไวยากรณ์ที่ไม่สามารถทิ้ง2> /dev/null
ได้$ echo ${.sh.version} 2> /dev/null ksh: ${.sh.version}: bad substitution
แน่นอน
echo $KSH_VERSION
ว่าใช้งานได้ดี - ฉันหมายความว่ามันจะไม่ผิดพลาด - แม้ว่าเครื่องเหล่านี้จะว่างเปล่า นอกจากนี้ผมเห็นที่ไหนสักแห่งที่มีการตั้งค่าโดยเฉพาะKSH_VERSION
pdksh
คำถาม:
- ฉันจะตรวจสอบเวอร์ชั่นของ
ksh
โปรแกรมอย่างปลอดภัยได้อย่างไรksh
สำหรับวัตถุประสงค์ของฉันที่นี่ฉันไม่สนใจสิ่งที่หมายเลขรุ่นที่เกิดขึ้นจริงเป็นเพียงแค่ไม่ว่าจะเป็นรุ่นเก่า - คือ
$KSH_VERSION
พอดีหรือไม่? ฉันหมายถึงถ้ามันว่างเปล่าksh
จำเป็นต้องเป็นรุ่นที่ล้าสมัยหรือไม่? ฟอรัมอื่นถูกต้องหรือไม่ที่อาจไม่ได้ตั้งไว้สำหรับรุ่นที่ใหม่กว่าksh
? - ไม่มีวิธีตรวจสอบเลยใช่ไหม?
PS1
ให้ใช้ฟังก์ชั่นนี้ อย่างไรก็ตาม ksh เก่าไม่สนับสนุนใน$()
PS1
ดังนั้นหากเป็นรุ่นที่ทันสมัยของ ksh ฉันต้องการPS1
ใช้ฟังก์ชันที่ฉันสร้างขึ้น $PWD
ถ้าหากมันเป็นรุ่นเก่าผมใช้เพียง