use*_*375 1 shell directory shell-script files test
如何检查是否/bin/x86_64/bin/ls
是 bash shell 脚本中的目录
这是我尝试过的:
#!/bin/bash
if [ $# -eq 2 ]; then
if [[ "$1" = /* ]]
then
cd ./bin/x86_64/bin/ls
if [ -d "$1" ]; then
echo "ok"
i="$1"
echo $i
else
echo "error2"
exit
fi
else
echo "error"
exit
fi
fi
Run Code Online (Sandbox Code Playgroud)
您可以使用以下命令检查目录是否存在:
if [[ -d "$1" ]]; then
Run Code Online (Sandbox Code Playgroud)
如果要检查要使用的任何文件
if [[ -e "$1" || -L "$1" ]]; then
Run Code Online (Sandbox Code Playgroud)
如果要检查文件是否是常规文件(或到常规文件的符号链接),而不是目录(或设备、套接字、命名管道...)文件,则可以使用:
if [[ -f "$1" ]]; then
Run Code Online (Sandbox Code Playgroud)
如果文件可能存在但您想确保它不是零大小:
if [[ -s "$1" ]] then;
Run Code Online (Sandbox Code Playgroud)
所有这些测试都基于stat()
系统调用的结果(除了-L
依赖于lstat()
)。如果您没有权限对文件进行这样的调用(例如,因为您没有对该文件所在目录的搜索访问权限,也没有对该文件的符号链接解析所涉及的目录的搜索访问权限),那么那些测试将无声地返回 false ,就好像文件不存在一样。
[[ ... ]]
是一个ksh
运算符,也受bash
和支持zsh
。标准等价物(用于 in sh
)与[
命令(对于上面的第二个示例,使用[ -e "$1" ] || [ -L "$1" ]
)。