2
ทำไมคำสั่ง xargs นี้ไม่ทำงาน
ฉันต้องการลบส่วนขยาย. sh ทั้งหมดเพื่อทำสิ่งนี้: ls *.sh | xargs -I {} mv {} `basename {} .sh` อย่างไรก็ตามมันไม่ทำงานมันจะทำงานเหมือนbasenameส่งคืนชื่อไฟล์ที่ไม่เปลี่ยนแปลง ทำไมมันเป็นเช่นนั้น ตัวอย่างเช่นงานนี้: ls *.sh | xargs -I {} echo `basename {}.jpg .jpg`; แก้ไข : วิธีแก้ไข: อัญประกาศเดี่ยวป้องกัน`basename ...`การประเมินผลโดยเชลล์ก่อนที่คำสั่งจะรัน ls *.sh | xargs -I {} sh -c 'mv {} `basename {} .sh`'