我想更改目录以在每个目录中执行任务。以下是代码:
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")
答案 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
另一种方法是使用pushd
和popd
:
for i in {1..10}; do
pushd dir/subdir$i || continue
cmd1
cmd2
popd
done