ฉันสามารถตัดและวางโค้ดของคุณลงในไฟล์และทำงานได้อย่างถูกต้อง หากคุณดำเนินการเช่นนี้ควรใช้งานได้:
"file.sh" ของคุณ:
#!/bin/bash
if [ $# -lt 3 -o $# -gt 3 ]; then
echo "Error... Usage: $0 host database username"
exit 0
fi
คำสั่ง:
$ ./file.sh arg1 arg2 arg3
โปรดทราบว่า "file.sh" ต้องสามารถเรียกใช้งานได้:
$ chmod +x file.sh
คุณอาจได้รับข้อผิดพลาด b / c ว่าคุณกำลังป้อนข้อมูลอย่างไร (w / a ไปป์แครอท ฯลฯ ) คุณสามารถลองแบ่งเงื่อนไขออกเป็นสองเงื่อนไข:
if [ $# -lt 3 ] || [ $# -gt 3 ]; then
echo "Error... Usage: $0 host database username"
exit 0
fi
หรือเนื่องจากคุณกำลังใช้bash
คุณสามารถใช้ไวยากรณ์ในตัว:
if [[ $# -lt 3 || $# -gt 3 ]]; then
echo "Error... Usage: $0 host database username"
exit 0
fi
และในที่สุดคุณสามารถตรวจสอบได้ว่ามีการให้ 3 อาร์กิวเมนต์หรือไม่ (สะอาดรักษาความเข้ากันได้ของเชลล์ POSIX)
if [ $# -ne 3 ]; then
echo "Error... Usage: $0 host database username"
exit 0
fi