2014-11-06 103 views
0

我在教我自己的bash,并试图创建一个脚本,它将循环访问给定目录中包含的目录(或当前目录,如果没有提供) 。如何循环存储在变量中的目录路径

这是剧本我到目前为止有:

#!/bin/bash 
start_dir=${1:-`pwd`}  # set to current directory or user supplied directory 
echo start_dir=$start_dir 

for d in $start_dir ; do 
    echo dir=$d 
done 

首先,所有的这个脚本目前并是集dstart_dir ABD回声在start_dir值。我想这是有道理的,但我希望它实际上会遍历目录。我如何获得这个实际循环通过start_dir变量中设置的目录?

此外,我只想循环通过目录。 This answer,显示在路径后放置/将确保只有目录返回到for循环。有没有一种方法来合并这个以确保循环结束start_dir只会返回目录,因为有可能用户不会提供脚本的目录路径?

干杯

回答

3

该示例使用水珠,所以你可以:

#!/bin/bash 
start_dir=${1:-`pwd`}  # set to current directory or user supplied directory 
echo "start_dir=$start_dir" 

for d in "$start_dir"/*/ ; do 
    echo "dir=$d" 
done 

*不是一个目录名,它只是意味着“任何字符串”。 Bash扩展它以查找匹配模式的所有路径。

+0

谢谢。完美工作。还给了我一个调查'glob'的新术语 – br3nt 2014-11-06 00:17:48