Я пытаюсь написать чрезвычайно простой script в 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
И вот вывод:
[email protected]~ $ ./scripts/testmove.sh /home/andy/
/home/andy/ is a directory
[email protected]~ $ ./scripts/testmove.sh /home/andy/blah.txt
/home/andy/blah.txt is a file
[email protected]~ $ ./scripts/testmove.sh /home/andy/blah\ with\ a\ space.txt
/home/andy/blah with a space.txt is not valid
[email protected]~ $ ./scripts/testmove.sh /home/andy\ with\ a\ space/
/home/andy with a space/ is not valid
Все эти пути действительны и существуют.