判断路径目录不存在,则创建目录

本文介绍了一个简单的Shell脚本,用于检查指定路径的日志文件目录是否存在,并在不存在时创建该目录。此脚本适用于基本的日志文件管理场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#filename=`date -d next-day +'%Y%m%d.txt'`
filename=`date +'%Y%m%d.txt'`
filepath='/home/openresty/openresty/nginx/nserver/log/rate/'

if [ -d ${filepath} ]; then



echo "${filepath} is exsit"


else


mkdir ${filepath}


fi

<think>好的,用户想用Shell脚本判断目录是否存在,如果存在创建。首先,我需要回忆一下Shell中检查目录存在的方法。记得在Shell脚本中,可以使用`-d`选项来检查目录是否存在,比如`if [ -d "$dir" ]`。然后,如果存在的话,需要用`mkdir`命令来创建目录,但可能需要加上`-p`参数来创建目录,这样即使路径中的上级目录存在,也能一并创建。 接下来,参考用户提供的引用[2]里的例子,里面用到了`if`条件判断,结构是`if...elif...else...fi`,还有各种文件测试符比如`-e`检查存在,`-f`检查普通文件,`-d`检查目录。所以用户的脚本应该使用类似的结构。 用户的问题可能需要先检查目录是否存在,如果存在创建。可能的命令是`mkdir -p`,因为`-p`参数可以自动创建存在的父目录,这样即使目录路径中的某些部分存在,也能成功创建,而会报错。所以可能需要复杂的判断,直接用`mkdir -p`就可以。过用户可能想要显式地检查是否存在,再执行创建操作,这样更清晰,或者在需要执行其他操作时更灵活。 例如,用户可能希望先检查目录是否存在,如果存在,则创建并输出提示信息。这时候可以写成: if [ ! -d "$dir" ]; then mkdir -p "$dir" echo "目录创建" fi 或者更简洁的写法是直接使用`mkdir -p`,因为如果目录存在,它会做任何事情,也会报错,所以可能需要检查。过根据用户的要求,可能需要显式判断。 另外,用户提供的引用[2]中的脚本展示了如何处理参数,比如检查参数数量是否为1,以及各种文件类型判断。所以用户可能需要处理脚本的参数,即目录路径作为参数传入。例如,脚本接受一个参数作为目录路径,然后判断是否存在存在创建。 综合这些,可能的脚本结构是: #!/bin/bash dir="$1" if [ -d "$dir" ]; then echo "目录存在" else mkdir -p "$dir" echo "目录创建" fi 或者更简洁的: mkdir -p "$dir" && echo "目录创建" || echo "目录存在" 但可能用户需要显式的判断,以便在存在时执行更多操作。另外要注意变量引用加上双引号,避免路径中有空格导致问题。 还需要确保脚本有执行权限,并且正确的shebang。同时,如果目录路径包含特殊字符,引号的使用也很重要。 总结步骤: 1. 接收参数作为目录路径。 2. 检查该路径是否存在且为目录。 3. 如果存在创建目录。 4. 输出相应的提示信息。 可能还需要处理参数存在的情况,比如用户没有提供参数时给出错误提示,如引用[2]中的例子检查参数数量是否为1,否则提示输入文件。所以可以添加参数检查: if [ "$#" -ne 1 ]; then echo "请输入一个目录路径" exit 1 fi 然后进行目录判断创建。 最终脚本可能像这样: #!/bin/bash if [ "$#" -ne 1 ]; then echo "错误:请提供一个目录路径作为参数" exit 1 fi dir="$1" if [ -d "$dir" ]; then echo "目录 '$dir' 已存在" else mkdir -p "$dir" echo "目录 '$dir' 已创建" fi 或者更简洁地使用`mkdir -p`并忽略检查,因为即使目录存在,`mkdir -p`也会报错,所以可以: mkdir -p "$dir" && echo "目录 '$dir' 已存在或已创建" 但用户可能希望明确区分存在存在的情况,所以显式判断更好。 另外,要注意权限问题,如果用户没有权限在目标位置创建目录,脚本会失败,可能需要处理错误,但用户的问题中可能需要涉及这部分。</think>### 使用Shell脚本判断目录是否存在创建判断目录是否存在并在存在创建,可以通过以下步骤实现: #### 方法一:显式判断创建 1. **参数检查**:确保脚本接收一个参数作为目录路径。 2. **目录存在性检查**:使用`-d`测试符判断目录是否存在。 3. **创建目录**:若存在,使用`mkdir -p`创建目录(`-p`参数会自动创建目录)。 ```bash #!/bin/bash # 检查参数数量 if [ "$#" -ne 1 ]; then echo "错误:请提供目录路径作为参数" >&2 exit 1 fi dir="$1" if [ -d "$dir" ]; then echo "目录 '$dir' 已存在" else mkdir -p "$dir" && echo "目录 '$dir' 已创建" fi ``` #### 方法二:直接创建(无需显式判断) `mkdir -p`本身会报错,可直接使用: ```bash #!/bin/bash dir="$1" mkdir -p "$dir" && echo "目录 '$dir' 已存在或已创建" ``` #### 关键点说明 1. **参数检查**:确保用户输入了正确的参数数量,避免空路径操作[^2]。 2. **`-d`测试符**:用于判断路径是否为目录。 3. **`mkdir -p`**:自动处理多层目录创建,避免因父目录缺失导致的失败[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值