Eu estou tentando escrever um script extremamente simples no Ubuntu que me permita passar um nome de arquivo ou um diretório e ser capaz de fazer algo específico quando é um arquivo e outra coisa quando é um diretório. O problema que estou tendo é quando o nome do diretório, ou provavelmente arquivos também tem espaços ou outros caracteres escapable estão no nome.
Aqui está o meu código básico abaixo e alguns testes.
#!/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
E aqui está a saída:
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
Todos esses caminhos são válidos e existem.
if
-else
construções em Bash também suportamelif
. Apenas para sua informação.