Bash 循环遍历路径中带有空格的文件名

Bash 循环遍历路径中带有空格的文件名,bash,scripting,Bash,Scripting,我想将路径名传递给脚本,但我的路径有空格(例如/Users/netto/iTunes\Media/Music/)。 我已经尝试将实际路径直接放在for循环上,并且我能够获得所有文件。不幸的是,我无法将其作为变量传递。我试过双引号和单引号。这就是我目前拥有的 $PATH=$1 for f in $PATH; do echo "Processing file $f " done 请告诉我怎么做。 提前感谢您。变量中的空格在命令级别展开,因此要解决此问题,您可以在“$1”周围加引号(以便正确

我想将路径名传递给脚本,但我的路径有空格(例如/Users/netto/iTunes\Media/Music/)。 我已经尝试将实际路径直接放在for循环上,并且我能够获得所有文件。不幸的是,我无法将其作为变量传递。我试过双引号和单引号。这就是我目前拥有的

$PATH=$1
for f in $PATH; do
   echo "Processing file $f " 
done
请告诉我怎么做。
提前感谢您。

变量中的空格在命令级别展开,因此要解决此问题,您可以在“$1”周围加引号(以便正确转义空格)或使用bash数组

以下是两个应该有效的示例:

 #!/bin/bash
DIR="$1"
for f in "$DIR"/* 
do
  echo "Processing file $f " 
done
或者使用bash数组:

#!/bin/bash
FILES=("$1"*)
for f in "${FILES[@]}"
do
  echo "Processing file $f " 
done

“$1”/*中f的
;执行echo“处理文件$f”;完成
注意事项:1)不要将
路径
用作变量名,它由系统保留。2) 正确的属性是在声明变量没有
$
的情况下完成的,即
MY_VAR=$1
3)使用正确的引号:
MY_VAR=“$1”
从技术上讲,变量赋值不严格要求引号。如文件所述,在分配期间不会执行分词和文件名扩展。可能会重复。也看到