ฉันมีif
ในสคริปต์ทุบตีของฉันที่ต้องตรวจสอบว่า EITHER ของ 2 ไฟล์ที่มีอยู่หากพวกเขาไม่อยู่มันควรจะสะท้อน
รหัสฉันมี:
if [[ ! -f /etc/benchmarking/code ]] && [[ ! -f /etc/benchmarking/code.class ]]; then
echo "match"
fi
แต่นี่ดูเหมือนจะไม่ทำงานด้วยเหตุผลบางอย่าง
ฉันแน่ใจว่า 110% ว่าไม่มีไฟล์ 2 ไฟล์นี้ ฉันไม่ได้รับข้อผิดพลาดใด ๆ if
มันก็ไม่ได้ใส่
ฉันยังใหม่กับการเขียนสคริปต์ทุบตีดังนั้นฉันไม่แน่ใจว่าจะเกิดอะไรขึ้น
[[ -f xxx ]]
ผลตอบแทนจริงถ้า xxx มีอยู่และเป็นไฟล์ปกติ (หรือ symlink ไปยังไฟล์ปกติ) มันจะคืนค่าเท็จหากไม่มีอยู่หรือไม่สามารถบอกได้ว่ามีอยู่หรือไม่หรือมีอยู่ แต่ไม่ใช่ไฟล์ปกติ (ไดเรกทอรี, ไพพ์, อุปกรณ์, ซ็อกเก็ต ... ) หรือถ้าเป็น symlink ไปยังไฟล์ที่ไม่มีอยู่หรือไม่สามารถบอกได้ว่ามีอยู่หรือไม่หรือไม่ใช่ไฟล์ปกติ ... [[ -e $file ]] || [[ -L $file ]]
ใกล้ถึงการทดสอบการมีอยู่ ls -d -- "$file" > /dev/null 2>&1
อยู่ใกล้ยิ่งขึ้น และตามกฎแล้วการทดสอบประเภทนี้นำไปสู่สภาพการแข่งขัน อาจจะมีวิธีอื่น
[[ ! -f /etc/.../... ]]; echo $?
เพื่อแต่ละ