ฉันพยายามเขียนสคริปต์อย่างง่าย ๆ ใน Ubuntu ซึ่งจะทำให้ฉันสามารถส่งผ่านชื่อไฟล์หรือไดเรกทอรีและสามารถทำสิ่งที่เฉพาะเจาะจงเมื่อเป็นไฟล์และอย่างอื่นเมื่อเป็นไดเรกทอรี ปัญหาที่ฉันมีคือเมื่อชื่อไดเรกทอรีหรือไฟล์อาจมีช่องว่างหรือตัวอักษรที่สามารถหลีกเลี่ยงได้อยู่ในชื่อ
นี่คือรหัสพื้นฐานของฉันด้านล่างและการทดสอบสองสามข้อ
#!/bin/bash
PASSED=$1
if [ -d "${PASSED}" ] ; then
echo "$PASSED is a directory";
else
if [ -f "${PASSED}" ]; then
echo "${PASSED} is a file";
else
echo "${PASSED} is not valid";
exit 1
fi
fi
และนี่คือผลลัพธ์:
andy@server~ $ ./scripts/testmove.sh /home/andy/
/home/andy/ is a directory
andy@server~ $ ./scripts/testmove.sh /home/andy/blah.txt
/home/andy/blah.txt is a file
andy@server~ $ ./scripts/testmove.sh /home/andy/blah\ with\ a\ space.txt
/home/andy/blah with a space.txt is not valid
andy@server~ $ ./scripts/testmove.sh /home/andy\ with\ a\ space/
/home/andy with a space/ is not valid
เส้นทางเหล่านั้นทั้งหมดถูกต้องและมีอยู่จริง
if
-else
โครงสร้างใน Bash รองรับelif
เช่นกัน เพียงแค่ FYI