Ben bir dosya adı veya bir dizin ya da bir dosya olduğunda belirli bir şey ve bir dizin olduğunda başka bir şey yapmak için izin verecek Ubuntu son derece basit bir komut dosyası yazmaya çalışıyorum. Yaşadığım sorun, dizin adı veya büyük olasılıkla dosyalar da adında boşluklar veya diğer kaçan karakterler olduğunda.
Aşağıda temel kodum ve birkaç test var.
#!/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
Ve işte çıktı:
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
Bu yolların tümü geçerli ve var.
if-elseBash'teki yapılar da desteklenirelif. Sadece FYI.