我想更改目录以在每个目录中执行任务。以下是代码:
for i in {1..10}
do
cd dir/subdir$i
bla... bla.. bla..
done
Run Code Online (Sandbox Code Playgroud)
但是我收到错误:
not found [No such file or directory]
Run Code Online (Sandbox Code Playgroud)
我已尝试以下操作,但仍然出现与上述相同的错误:
cd $(echo dir/subdir"$i")
cd $(eval dir/subdir"$i")
Run Code Online (Sandbox Code Playgroud)
问题可能是因为您想要更改的所有目录都是相对于原始基本目录的。解决这个问题的一种方法是使用(...)子 shell:
for i in {1..10}; do
(
cd dir/subdir$i || continue
cmd1
cmd2
)
done
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用以下命令返回到上一个目录cd "$OLDPWD":
for i in {1..10}; do
cd dir/subdir$i || continue
cmd1
cmd2
cd "$OLDPWD"
done
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用pushdand popd:
for i in {1..10}; do
pushd dir/subdir$i || continue
cmd1
cmd2
popd
done
Run Code Online (Sandbox Code Playgroud)