Спасибо @YogeshPatel

аюсь написать чрезвычайно простой скрипт в 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

Все эти пути действительны и существуют.

Ответы на вопрос(8)

Ваш ответ на вопрос