Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/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_Loops_Directory - Fatal编程技术网

在Bash中使用包含空格的目录名

在Bash中使用包含空格的目录名,bash,loops,directory,Bash,Loops,Directory,我试图通过for循环对名称中包含空格的目录执行一些操作。这就是我正在使用的 dirs=$(ls -d1 */ | cut -f1 -d'/') for dir in $dirs do echo "${dir}" mkdir -p $outputdir/"${dir}" cd "${dir}" for file in *.$inputformat 但无法

我试图通过for循环对名称中包含空格的目录执行一些操作。这就是我正在使用的

    dirs=$(ls -d1 */ | cut -f1 -d'/')

for dir in $dirs
    do 
        echo "${dir}"
        mkdir -p $outputdir/"${dir}"
        cd "${dir}"
        for file in *.$inputformat
但无法操作名称中带有空格的目录。我还能做什么

我还能做什么

只需在模式上迭代。您的脚本可能如下所示:

for dir in */; do         # !!
     if [[ ! -e "$dir" ]]; then break; fi   # or use shopt -s nullglob
     echo "$dir"
     mkdir -p "$outputdir/${dir}"
     cd "${dir}"
     for file in *."$inputformat"; do
           echo "$file!"
     done
     cd -
done

使用
shopt-s nullglob
来处理不匹配的情况是很好的。

在代码上添加一个shebang并粘贴到,尽管您需要做的第一件事是引用变量,避免使用
ls
是脚本。这是整个代码:@Jetchisel我还应该使用什么?不要期望对未引用的变量进行分词(例如,
用于$dirs中的dir
)执行任何正常操作。使用shell通配符(如*/中的dir的
)和
查找…-print0
。请查看是否有效。谢谢!