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