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
これらのパスはすべて有効であり、存在します。
if
-else
バッシュ中の構築もサポートelif
。参考までに。