在linux中使用循环更改目录

时间:2017-10-27 11:07:02

标签: linux bash unix

我想更改目录以在每个目录中执行任务。以下是代码:

for i in {1..10}
do
cd dir/subdir$i
bla... bla.. bla..
done

然而我收到错误:

 not found [No such file or directory]

我尝试过以下但仍然遇到上述错误:

cd $(echo dir/subdir"$i")
cd $(eval dir/subdir"$i")

1 个答案:

答案 0 :(得分:2)

问题可能是因为您要更改的所有目录都是相对于原始基目录的。 解决此问题的一种方法是使用(...)子shell:

for i in {1..10}; do
    (
    cd dir/subdir$i || continue
    cmd1
    cmd2
    )
done

另一种方法是使用cd "$OLDPWD"

返回上一个目录
for i in {1..10}; do
    cd dir/subdir$i || continue
    cmd1
    cmd2
    cd "$OLDPWD"
done

另一种方法是使用pushdpopd

for i in {1..10}; do
    pushd dir/subdir$i || continue
    cmd1
    cmd2
    popd
done