linux - mkdir: 无法创建目录 '': 没有这样的文件或目录
问题描述
我的代码旨在找到一个 /jar 文件夹,遍历 .jar 文件并创建具有相同文件名的 .xml 和 .trigger 文件。此外,它还会在 XML 文件中创建一个 ~ID~ 文件名 ~ID~ 字段。
我收到错误
mkdir: cannot create directory '': No such file or directory
我设置了 /tmp 文件夹,包括 /xml /jar 和 /trigger 文件夹,所以那些不存在的不是问题。
#!/bin/bash
jar_dir= /c/Users/hi/Desktop/Work/tmp/jar
xml_dir= /c/Users/hi/Desktop/Work/tmp/xml
trigger_dir= /c/Users/hi/Desktop/Work/tmp/trigger
# the following creates output directories if they don't exist
mkdir -p "${xml_dir}"
mkdir -p "${trigger_dir}"
# we start the for loop through all the files named `*.jar` located in the $jar_dir directory
for f in $(find ${jar_dir} -name "*.jar")
do
file_id=$(basename -s .jar ${f}) # extract the first part of the file name, excluding .jar
echo "<ID>${file_id}</ID>" > ${xml_dir}/${file_id}.xml
touch ${trigger_dir}/${file_id}.trigger # this one just creates an empty file at ${trigger_dir}/${file_id}.trigger
done
解决方案
这个命令:
jar_dir= /c/Users/hi/Desktop/Work/tmp/jar
完全等同于
jar_dir="" /c/Users/hi/Desktop/Work/tmp/jar
并告诉 shell 运行将/c/Users/hi/Desktop/Work/tmp/jar
环境变量jar_dir
设置为空字符串的命令(仅在该命令的持续时间内)。如果/c/.../jar
是一个目录,那也应该给你一个错误。
要将/c/.../jar
字符串分配给变量,请丢失空格。
您收到的错误消息来自mkdir
尝试创建一个空名称的目录。(虽然这有点令人困惑。)
对于 shell 脚本的问题,将脚本粘贴到https://www.shellcheck.net/通常会有所帮助,它可以识别大多数常见错误并告诉您该怎么做。
请参阅 SO 和 unix.SE 上的这些帖子进行讨论:
推荐阅读
- flutter - Flutter - 将选项卡添加到页面时发生错误
- node.js - 尝试导航到 Heroku 中的登录路线时出现 404 错误
- python-3.x - Python3:字符串中的字符应该被视为 Int、Float 还是 String?
- python - 有没有人遇到过这个错误?如何调试它?
- java - Java RecycleView 在不同页面中加载图像
- haskell - 通过模式匹配创建一个简单的 cli 参数解析器
- c - 我在 Linux 内核中找不到 proc_create_data 函数的定义 - 或者我找到了但没能理解
- vue.js - 有没有办法将 VueJS 模板字符串转换为 createElement 语法
- perl - 如何在 perl-5.32.0 上安装 Method::Signatures?
- javascript - 我如何在 For 循环中使用 Promises