การตรวจสอบอาร์กิวเมนต์ Bash หนึ่งบรรทัดโดยมีและไม่มีการตรวจสอบความถูกต้องของไดเรกทอรี
นี่คือวิธีการบางอย่างที่ได้ผลสำหรับฉัน คุณสามารถใช้มันได้ทั้งในเนมสเปซสคริปต์ส่วนกลาง (ถ้าในเนมสเปซส่วนกลางคุณไม่สามารถอ้างอิงตัวแปรบิวด์อินของฟังก์ชันได้)
ซับหนึ่งอันรวดเร็วและสกปรก
: ${1?' You forgot to supply a directory name'}
เอาท์พุท:
./my_script: line 279: 1: You forgot to supply a directory name
Fancier - จัดหาชื่อฟังก์ชันและการใช้งาน
${1? ERROR Function: ${FUNCNAME[0]}() Usage: " ${FUNCNAME[0]} directory_name"}
เอาท์พุท:
./my_script: line 288: 1: ERROR Function: deleteFolders() Usage: deleteFolders directory_name
เพิ่มตรรกะการตรวจสอบที่ซับซ้อนโดยไม่ทำให้ฟังก์ชันปัจจุบันของคุณเกะกะ
เพิ่มบรรทัดต่อไปนี้ภายในฟังก์ชันหรือสคริปต์ที่รับอาร์กิวเมนต์
: ${1?'forgot to supply a directory name'} && validate $1 || die 'Please supply a valid directory'
จากนั้นคุณสามารถสร้างฟังก์ชันการตรวจสอบความถูกต้องที่ทำสิ่งต่างๆเช่น
validate() {
if [[ ! -d "$1" ]]; then
return 1
fi
}
และฟังก์ชันดายที่ยกเลิกสคริปต์เมื่อล้มเหลว
die() { echo "$*" 1>&2 ; exit 1; }
สำหรับอาร์กิวเมนต์เพิ่มเติมเพียงแค่เพิ่มบรรทัดเพิ่มเติมโดยจำลองรูปแบบ
: ${1?' You forgot to supply the first argument'}
: ${2?' You forgot to supply the second argument'}