Bash脚本通过用户传入参数创建新目录时出现mkdir报错如何解决
问题原因
你的报错*mkdir: cannot create directory "": No such file or directory*是因为脚本中的$folder变量未被赋值,运行时是空值,相当于调用mkdir ""创建空名称的目录,不符合系统规则。
你当前的代码没有接收用户传入的脚本参数的逻辑,Bash 中传入脚本的第一个参数对应内置变量$1,第二个对应$2,以此类推,需要手动赋值给你定义的变量。
修正方案
- 脚本开头添加参数赋值逻辑,把你传入的第一个参数赋值给
folder变量 - 可以新增参数非空校验,避免用户未传参数时运行出错
修正后的完整代码如下:
# 将传入的第一个参数赋值给folder变量 folder="$1" # 新增参数非空校验 if [ -z "$folder" ];then echo "错误:请传入要创建的文件夹名称作为参数" echo "使用示例:bash $0 目标文件夹名" exit 1 fi echo $folder if [ ! -d "$folder" ]; then mkdir -p "$folder" fi
运行方式
假设你把脚本保存为create_dir.sh,添加执行权限后运行即可:
- 加执行权限:
chmod +x create_dir.sh - 运行创建文件夹:
./create_dir.sh 你要创建的文件夹名
内容的提问来源于stack exchange,提问作者oNysten
相关产品推荐
相关产品推荐

