6
วิธีรับทั้ง PIPESTATUS และเอาต์พุตใน bash script
ฉันพยายามรับวันที่แก้ไขล่าสุดของไฟล์ด้วยคำสั่งนี้ TM_LOCAL=`ls -l --time-style=long-iso ~/.vimrc | awk '{ print $6" "$7 }'` TM_LOCAL มีค่าเช่น "2012-05-16 23:18" หลังจากเรียกใช้งานบรรทัดนี้ ฉันต้องการตรวจสอบ PIPESTATUS เพื่อดูว่ามีข้อผิดพลาดหรือไม่ ตัวอย่างเช่นหากไฟล์ไม่มีอยู่lsส่งคืน 2 แต่$?มีค่า 0 เนื่องจากมีค่าส่งคืนawkเป็น ถ้าฉันรันคำสั่งนี้เพียงอย่างเดียวฉันสามารถตรวจสอบค่าส่งคืนของ ls โดยดูที่ ${PIPESTATUS[0]} ls -l --time-style=long-iso ~/.vimrc | awk '{ print $6" "$7 }' แต่$PIPESTATUSไม่ทำงานอย่างที่ฉันคาดไว้ถ้าฉันกำหนดเอาต์พุตให้กับตัวแปรตามตัวอย่างแรก ในกรณีนี้$PIPESTATUSอาร์เรย์มีเพียง 1 องค์ประกอบซึ่งเหมือนกับ$? ดังนั้นคำถามคือฉันจะได้รับทั้งสอง$PIPESTATUSและกำหนดผลลัพธ์ให้ตัวแปรในเวลาเดียวกันได้อย่างไร