我試圖在Ubuntu中編寫一個非常簡單的腳本,它允許我將它傳遞給文件名或目錄,並且能夠在某個文件,以及其他目錄中的其他內容。我遇到的問題是當目錄名稱或文件太多時,名稱中包含空格或其他易變字符。檢查傳遞的參數是否是BASH中的文件或目錄
下面是我的基本代碼下面,和幾個測試。
#!/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
所有這些路徑都有效,而且存在。
`if`-`else`結構還支持`elif`。只是FYI。 – 2011-01-12 03:22:50