mkdir: 无法创建目录 '': 没有那个文件或目录

时间:2021-02-19 22:17:01

标签: linux bash shell

我的代码旨在查找 /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

2 个答案:

答案 0 :(得分:1)

这个命令:

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 上的这些帖子进行讨论:

答案 1 :(得分:0)

xml_dir= /c/Users/hi/Desktop/Work/tmp/xml 等号后不能有空格。所以 xml_dir=/c/Users/hi/Desktop/Work/tmp/xml