ฉันพยายามเขียนสคริปต์ที่ต้องตรวจสอบว่ามีไฟล์อยู่หรือไม่ ในคอนโซลฉันเขียน
if [[ -a /path/to/file.txt ]]; then echo "not mod"; else echo "mod"; fi
และฉันได้รับ
not mod
แต่เมื่อฉันเขียนสคริปต์เพื่อทำสิ่งเดียวกัน:
#!/bin/sh
if [[ -a /path/to/file.txt ]]; then echo "not mod"; else echo "mod"; fi
แล้วรันสคริปต์ฉันได้รับสิ่งนี้:
./ex.sh: 2: [[: not found
mod
ฉันบันทึกสคริปต์ในไดเรกทอรีปัจจุบันและตั้งชื่อเป็น ex.sh จากนั้นฉันตรวจสอบให้แน่ใจว่าสามารถเรียกใช้งานได้ ในการเรียกใช้สคริปต์ฉันต้องทำสิ่งนี้:
./ex.sh
ทำไมฉันถึงได้รับปัญหานี้? ฉันลองมาหลายอย่างแล้ว:
if [ -a /home ...
และ
if test -a /home ...
ทั้งสองคนกลับมา
13: -a: unexpected operator
ฉันสามารถทำให้มันใช้งานได้ แต่สำหรับฉันต้องลบบรรทัดแรก (#! / bin / sh) คุณรู้ไหมว่าทำไมสิ่งนี้ถึงเกิดขึ้น?
—
Buzu
ลอง
—
kev
#!/bin/bash
สวัสดีเคฟฉันก็รู้สึกเช่นนั้นเหมือนกัน ฉันเพิ่งปรับปรุงคำถามของฉัน ฉันใช้เวลากับสิ่งนี้มากเกินไป แต่ฉันดีใจที่ฉันสามารถแก้ไขมันได้ ขอบคุณสำหรับคำตอบ. เป็นวิธีแก้ปัญหาแน่นอน
—
Buzu
@Kev กรุณาโพสต์ว่าเป็นคำตอบ
—
slhck
Buzu, @Kev - หากคุณพบคำตอบให้โพสต์เป็นคำตอบด้านล่างอย่าแก้ไขคำถาม
—
1686