Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash-如果文件夹中有空格,则脚本错误_Bash_Logging_Directory_Space_Names - Fatal编程技术网

Bash-如果文件夹中有空格,则脚本错误

Bash-如果文件夹中有空格,则脚本错误,bash,logging,directory,space,names,Bash,Logging,Directory,Space,Names,我有这个剧本 #!/bin/bash rename_files() { title="${1##*${2} - }" for filename in "$1/"*.*; do case "${filename##*.}" in doc|doc|doc) mkdir -p -m 777 "/Users/Desktop/Documents Share/Downloaded/${title}" new_path="/Users/Desktop/

我有这个剧本

#!/bin/bash

rename_files() {
   title="${1##*${2} - }"
   for filename in "$1/"*.*; do
   case "${filename##*.}" in
     doc|doc|doc)
       mkdir -p -m 777 "/Users/Desktop/Documents Share/Downloaded/${title}"
       new_path="/Users/Desktop/Documents Share/Downloaded/${title}/${title}.${filename##*.}"
       let "iters=1"
       while [ -f $new_path ] ; do
          new_path=$new_path"$iters"
          let "iters++"
       done
       echo "moving $filename -> $new_path"
       mv "${filename}" "${new_path}"
       ;;
   esac
   done
}

rename_category() {
  for path in "/Users/Desktop/Documents Share/Downloads/${1}"*; do
    rename_files "$path" "$1"
  done
}

rename_category DOC
此脚本自动移动和重命名
/Users/Desktop/Documents Share/download
中包含的文件。如果我使用名为
Documents
的文件夹而不是
Documents Share
的文件夹,一切正常。我试着使用
文档\Share
,但不起作用

这是错误日志

/Users/Desktop/Script.sh: line 11: [: /Users/Desktop/Documents: binary operator expected
我如何解决它?

到处引用变量。指示行中缺少双引号:

while [ -f $new_path ] ; do
应该是

while [ -f "$new_path" ] ; do
到处引用变量。指示行中缺少双引号:

while [ -f $new_path ] ; do
应该是

while [ -f "$new_path" ] ; do

我认为$new_path(第11行)应该用双引号括起来

我认为$new_path(第11行)应该用双引号括起来

doc | doc | doc)中的大小写“${filename##*.}”
??什么?祝你好运。只有一个扩展名示例。
doc | doc | doc中的case“${filename##*.}”
??什么?祝你好运。只是一个扩展示例。非常感谢!你的回答对我有帮助,但乔洛巴在你之前几分钟就回答了;我真的很抱歉,我不能将多个答案标记为最佳答案。是的,我知道。别担心,我很高兴能帮上忙。也许下次吧,非常感谢!你的回答对我有帮助,但乔洛巴在你之前几分钟就回答了;我真的很抱歉,我不能将多个答案标记为最佳答案。是的,我知道。别担心,我很高兴能帮上忙。也许下次吧