Saya mencoba untuk menulis skrip yang sangat sederhana di Ubuntu yang memungkinkan saya untuk memberikannya nama file atau direktori, dan dapat melakukan sesuatu yang spesifik ketika itu file, dan sesuatu yang lain ketika itu adalah direktori. Masalah yang saya alami adalah ketika nama direktori, atau mungkin file juga, memiliki spasi atau karakter lain yang dapat dihapus dalam nama.
Ini kode dasar saya di bawah, dan beberapa tes.
#!/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
Dan inilah hasilnya:
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
Semua jalur itu valid, dan ada.
if-elseKonstruksi di Bash juga mendukungelif. Hanya FYI.