通过嵌套Shell脚本传递变量

时间:2013-02-15 20:03:31

标签: shell

我在我的Shell脚本中有一个简单的循环,希望能够为目录中的每个文件运行另一个循环...现在我只是要求它回显每个文件但我确实想要做更多的事情每个文件,但想先想出来......

for dir in "$@/"*
do
folder=$(basename "$dir")
path="/Users/wme/Desktop/test3/"
if [ ! -d "$path$folder" ]; then
mkdir "$path$folder"
mkdir "$path$folder/mp4"
mkdir "$path$folder/mov"
mkdir "$path$folder/ogg"
mkdir "$path$folder/webm"
mkdir "$path$folder/img"
fi
for file in "$dir/"*
    echo $file
done
done

所以基本上它找到了为这些文件夹创建文件夹结构的所有目录,现在我需要去处理每个文件夹中的电影...但是当我尝试第二次嵌套时出现错误循环,我做错了什么?

另外应该注意我在Automator中运行它,所以它并没有真正给我一个错误,只是说动作失败

1 个答案:

答案 0 :(得分:0)

您的第一个for循环也会遇到问题。 "$@/"*将扩展为$1 $2 ... $n/*,而不是$1/* $2/* ... $n/*。你需要

path="/Users/wme/Desktop/test3"
for dir in "$@"; do
    for subdir in "$dir/"*; do
        folder=$(basename "$subdir")

        if [ ! -d "$path/$folder" ]; then
            for ftype in mp4 mov ogg webm img; do
                mkdir -p "$path/$folder/$ftype"
            done
        fi
        for file in "$subdir/"*
           echo $file
        done
done