我正在尝试创建一个循环遍历几个文件夹并运行构建命令的别名,但我不断获得只显示for >
的输出。
这是我在.zshrc文件中的函数
recurse_build () {
for src in `ls`; do
cd $src; build; cd ..
done
}
我正在尝试制作别名
alias br='recurse_build'
但我最终得到以下提示
for >
任何帮助都将不胜感激。
编辑:修复了函数中的语法错误。是一个坏的案例打字而不是复制粘贴
答案 0 :(得分:4)
除了命令替换上缺少的反引号之外,无论如何这是迭代文件的错误方法。使用glob模式。
recurse_build () {
for src in */; do
pushd "$src" || continue # Don't do anything if pushd fails
build
popd
done
}
使用pushd
和popd
比记住返回的位置更清晰。
答案 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