在我的shell腳本中,我試圖檢查特定文件是否存在以及它是否具有讀取權限。Shell腳本檢查文件是否存在,並具有讀取權限
我的文件路徑中有空格。
我引用的文件路徑:
file='/my/path/with\ some\ \spaces/file.txt'
這是檢查文件是否存在功能:
#Check if file exists and is readable
checkIfFileExists() {
#Check if file exists
if ! [ -e $1 ]; then
error "$1 does not exists";
fi
#Check if file permissions allow reading
if ! [ -r $1 ]; then
error "$1 does not allow reading, please set the file permissions";
fi
}
在這裏,我的雙引號,以確保它得到的文件作爲一個參數:
checkIfFileExists "'$file'";
我收到一個錯誤從bash的說法:
[: too many arguments
這使我認爲它不會把它作爲一個參數。
但是在我的自定義錯誤中,我確實得到了整個路徑,並且它說它不存在。
Error: '/my/path/with\ some\ \spaces/file.txt' does not exists
雖然不存在的話,當我試圖用「貓$文件」讀它,我得到一個權限錯誤..
我究竟做錯了嗎?
您也可以使用複合命令'[! -r「$ 1」] && some command ||其他命令'而不是完整'如果[..];那麼一些命令;其他命令; fi' - 但在任何情況下總是引用你的變量。 –