เวิร์กสเตชันออนไลน์ของ OnWorks Linux และ Windows

โลโก้

ฟรีโฮสติ้งออนไลน์สำหรับเวิร์กสเตชัน

<ก่อนหน้านี้ | เนื้อหา | ถัดไป>

กำลังตรวจสอบอินพุต

ด้วยความสามารถใหม่ของเราในการป้อนข้อมูลด้วยแป้นพิมพ์ทำให้เกิดความท้าทายในการเขียนโปรแกรมเพิ่มเติม การตรวจสอบความถูกต้องของอินพุต บ่อยครั้ง ความแตกต่างระหว่างโปรแกรมที่เขียนดีและโปรแกรมที่เขียนไม่ดีอยู่ที่ความสามารถของโปรแกรมในการจัดการกับสิ่งที่ไม่คาดคิด บ่อยครั้ง ข้อมูลที่ไม่คาดคิดมักปรากฏในรูปแบบของอินพุตที่ไม่ถูกต้อง เราได้ทำสิ่งนี้เล็กน้อยกับโปรแกรมการประเมินของเราในบทที่แล้ว ซึ่งเราตรวจสอบค่าของจำนวนเต็มและคัดกรอง


ค่าว่างและอักขระที่ไม่ใช่ตัวเลข สิ่งสำคัญคือต้องทำการตรวจสอบการเขียนโปรแกรมประเภทนี้ทุกครั้งที่โปรแกรมได้รับอินพุต เพื่อป้องกันข้อมูลที่ไม่ถูกต้อง นี่เป็นสิ่งสำคัญอย่างยิ่งสำหรับโปรแกรมที่แชร์โดยผู้ใช้หลายคน การละเว้นการป้องกันเหล่านี้เพื่อประโยชน์ของเศรษฐกิจอาจได้รับการยกเว้นหากโปรแกรมจะต้องใช้เพียงครั้งเดียวและเท่านั้นโดยผู้เขียนเพื่อทำงานพิเศษบางอย่าง ถึงอย่างนั้น หากโปรแกรมทำงานที่เป็นอันตราย เช่น การลบไฟล์ ก็ควรที่จะรวมการตรวจสอบความถูกต้องของข้อมูลไว้ด้วย เผื่อไว้ด้วย

เรามีตัวอย่างโปรแกรมที่ใช้ตรวจสอบอินพุตประเภทต่างๆ:



#! / bin / ทุบตี

# อ่านตรวจสอบ: ตรวจสอบการป้อนข้อมูล valid_input () {

echo "อินพุตไม่ถูกต้อง '$REPLY'" >&2 ออก 1

}


อ่าน -p "ป้อนรายการเดียว> "


# อินพุตว่างเปล่า (ไม่ถูกต้อง)

[[ -z $REPLY ]] && valid_input


# อินพุตมีหลายรายการ (ไม่ถูกต้อง)

(( $(echo $REPLY | wc -w) > 1 )) && invalid_input


# อินพุตเป็นชื่อไฟล์ที่ถูกต้องหรือไม่

ถ้า [[ $REPLY =~ ^[-[:alnum:]\._]+$ ]]; แล้ว echo "'$REPLY' เป็นชื่อไฟล์ที่ถูกต้อง"

ถ้า [[ -e $REPLY ]]; แล้ว

echo "และมีไฟล์ '$REPLY' อยู่"

อื่น

echo "อย่างไรก็ตาม ไฟล์ '$REPLY' ไม่มีอยู่จริง"

fi


# ป้อนตัวเลขทศนิยมหรือไม่?

ถ้า [[ $REPLY =~ ^-?[[:digit:]]*\.[[:digit:]]+$ ]]; แล้ว echo "'$REPLY' เป็นตัวเลขทศนิยม"

อื่น

echo "'$REPLY' ไม่ใช่ตัวเลขทศนิยม"

fi


# อินพุตเป็นจำนวนเต็มหรือไม่?

ถ้า [[ $REPLY =~ ^-?[[:digit:]]+$ ]]; แล้ว echo "'$REPLY' เป็นจำนวนเต็ม"

อื่น

echo "'$REPLY' ไม่ใช่จำนวนเต็ม"

#! / bin / ทุบตี

# อ่านตรวจสอบ: ตรวจสอบการป้อนข้อมูล valid_input () {

echo "อินพุตไม่ถูกต้อง '$REPLY'" >&2 ออก 1

}


อ่าน -p "ป้อนรายการเดียว> "


# อินพุตว่างเปล่า (ไม่ถูกต้อง)

[[ -z $REPLY ]] && valid_input


# อินพุตมีหลายรายการ (ไม่ถูกต้อง)

(( $(echo $REPLY | wc -w) > 1 )) && invalid_input


# อินพุตเป็นชื่อไฟล์ที่ถูกต้องหรือไม่

ถ้า [[ $REPLY =~ ^[-[:alnum:]\._]+$ ]]; แล้ว echo "'$REPLY' เป็นชื่อไฟล์ที่ถูกต้อง"

ถ้า [[ -e $REPLY ]]; แล้ว

echo "และมีไฟล์ '$REPLY' อยู่"

อื่น

echo "อย่างไรก็ตาม ไฟล์ '$REPLY' ไม่มีอยู่จริง"

fi


# ป้อนตัวเลขทศนิยมหรือไม่?

ถ้า [[ $REPLY =~ ^-?[[:digit:]]*\.[[:digit:]]+$ ]]; แล้ว echo "'$REPLY' เป็นตัวเลขทศนิยม"

อื่น

echo "'$REPLY' ไม่ใช่ตัวเลขทศนิยม"

fi


# อินพุตเป็นจำนวนเต็มหรือไม่?

ถ้า [[ $REPLY =~ ^-?[[:digit:]]+$ ]]; แล้ว echo "'$REPLY' เป็นจำนวนเต็ม"

อื่น

echo "'$REPLY' ไม่ใช่จำนวนเต็ม"

กำลังตรวจสอบอินพุต


fi อื่น

echo "สตริง '$REPLY' ไม่ใช่ชื่อไฟล์ที่ถูกต้อง"

fi

fi อื่น

echo "สตริง '$REPLY' ไม่ใช่ชื่อไฟล์ที่ถูกต้อง"

fi


สคริปต์นี้แจ้งให้ผู้ใช้ป้อนรายการ ภายหลังจะมีการวิเคราะห์รายการเพื่อกำหนดเนื้อหา อย่างที่เราเห็น สคริปต์ใช้แนวคิดมากมายที่เราได้กล่าวถึงไปแล้ว รวมถึงฟังก์ชันของเชลล์ [[]], -, ตัวดำเนินการควบคุม

&& และถ้า เช่นเดียวกับปริมาณของนิพจน์ปกติที่ดีต่อสุขภาพ


ระบบปฏิบัติการคลาวด์คอมพิวติ้งยอดนิยมที่ OnWorks: