mkdir:无法创建目录:没有这样的文件或目录



我的代码旨在找到一个/jar文件夹,循环遍历.jar文件并创建具有相同文件名的.xml和.trigger文件。此外,它在XML文件中创建一个~ID~ filename ~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:

  • 命令未发现Bash变量赋值错误
  • 在变量赋值后在同一行运行命令是shell可移植的吗?
  • shell脚本中变量赋值中的空格

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

最新更新