如何查看目录是否存在?

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)

Mic*_*ant 6

您可以使用以下命令检查目录是否存在:

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" ])。

  • 你以什么方式和再次得到什么错误?提供您尝试的详细信息很好,但是除非您响应请求以获取有关您获得的错误或响应的更多详细信息,否则您不太可能获得太多帮助。 (3认同)