如何将循环合并到 bash 别名中
How do I incorporate a loop into a bash alias
我正在尝试创建一个别名,它循环访问几个文件夹并运行构建命令,但我不断收到仅显示 for >
.
的输出
这是我的 .zshrc 文件中的函数
recurse_build () {
for src in `ls`; do
cd $src; build; cd ..
done
}
我正在尝试创建一个别名
alias br='recurse_build'
但我最终得到以下提示
for >
如有任何帮助,我们将不胜感激。
编辑:修复了函数中的语法错误。键入而不是复制粘贴是一个糟糕的案例
可能是右边缺少反引号,但是正在处理的输出
ls 通常是个坏主意。这有效
recurse_build(){
for src in */; do
cd "$src" && ./build && cd ..
done
}
#TEST
mkdir -p a b c
echo 'echo $PWD:[=10=]' |tee a/build b/build c/build >/dev/null
chmod +x a/build b/build c/build
recurse_build
除了您的命令替换中缺少反引号外,这无论如何都是错误的遍历文件的方法。使用 glob 模式。
recurse_build () {
for src in */; do
pushd "$src" || continue # Don't do anything if pushd fails
build
popd
done
}
使用 pushd
和 popd
比必须记住要 return 到哪里要干净一点。
我正在尝试创建一个别名,它循环访问几个文件夹并运行构建命令,但我不断收到仅显示 for >
.
这是我的 .zshrc 文件中的函数
recurse_build () {
for src in `ls`; do
cd $src; build; cd ..
done
}
我正在尝试创建一个别名
alias br='recurse_build'
但我最终得到以下提示
for >
如有任何帮助,我们将不胜感激。
编辑:修复了函数中的语法错误。键入而不是复制粘贴是一个糟糕的案例
可能是右边缺少反引号,但是正在处理的输出 ls 通常是个坏主意。这有效
recurse_build(){
for src in */; do
cd "$src" && ./build && cd ..
done
}
#TEST
mkdir -p a b c
echo 'echo $PWD:[=10=]' |tee a/build b/build c/build >/dev/null
chmod +x a/build b/build c/build
recurse_build
除了您的命令替换中缺少反引号外,这无论如何都是错误的遍历文件的方法。使用 glob 模式。
recurse_build () {
for src in */; do
pushd "$src" || continue # Don't do anything if pushd fails
build
popd
done
}
使用 pushd
和 popd
比必须记住要 return 到哪里要干净一点。