如何将循环合并到bash别名中

时间:2017-02-09 19:11:33

标签: bash for-loop alias

我正在尝试创建一个循环遍历几个文件夹并运行构建命令的别名,但我不断获得只显示for >的输出。

这是我在.zshrc文件中的函数

recurse_build () {
    for src in `ls`; do 
        cd $src; build; cd ..
    done
}

我正在尝试制作别名

alias br='recurse_build'

但我最终得到以下提示

for > 

任何帮助都将不胜感激。

编辑:修复了函数中的语法错误。是一个坏的案例打字而不是复制粘贴

2 个答案:

答案 0 :(得分:4)

除了命令替换上缺少的反引号之外,无论如何这是迭代文件的错误方法。使用glob模式。

recurse_build () {
    for src in */; do
        pushd "$src" || continue   # Don't do anything if pushd fails
        build
        popd
    done
}

使用pushdpopd比记住返回的位置更清晰。

答案 1 :(得分:1)

可能是右侧缺少的反击,但处理的输出 无论如何,ls通常是一个坏主意。这工作

recurse_build(){
    for src in */; do
        cd "$src" && ./build && cd ..
    done
}

#TEST 
mkdir -p a b c 
echo 'echo $PWD:$0' |tee a/build b/build c/build >/dev/null
chmod  +x a/build b/build c/build 


recurse_build