如何 cd 到选定的目录以在循环中的每个目录中应用代码 (shell)?
How to cd into selected directory to apply code within each dir in a loop (shell)?
这就是我的 shell 脚本目前的样子
#!/bin/bash
for dir in ~/Trinchera/shell_example/*; do
cd $dir
cd test/inputs/
./stepwat -f files.in -o
wait
done
它 运行 成功了,但是它在实际 运行ning 之前首先显示了这个错误消息。
./loop_60_stepwat.sh: line 13: cd: test/inputs/: No such file or directory
./loop_60_stepwat.sh: line 15: ./stepwat: No such file or directory
./loop_60_stepwat.sh: line 11: cd: /home/harley/shell_example/run_60_stepwat.sh: Not a directory
./loop_60_stepwat.sh: line 13: cd: test/inputs/: No such file or directory
./loop_60_stepwat.sh: line 15: ./stepwat: No such file or directory
结果不错,但我想知道错误是什么意思,因为它仍然 运行 脚本正确。
我想在 运行 脚本时解决或消除此错误消息。 我认为该错误可能与 cd $dir
部分,因为我不确定如何正确地 cd 进入所选目录,它现在似乎可以解决问题。
*顺便说一句,每个目录下的所有文件和文件夹都完全相同,只是目录名称不同。
此外,由于我是初学者,如果对我的格式提出任何意见或反馈,我将不胜感激。
您的 shell_example
目录包含没有 test/inputs
子目录的子目录。这会导致第一个“没有这样的文件或目录”错误。
“不是目录”错误是因为一些匹配通配符的名称是文件,而不是目录,所以您不能 cd
它们。
当这些 cd
命令失败时,您最终会进入一个不包含 stepwat
的目录,因此您在尝试 运行 该命令时会遇到错误。
您可以使用与您要更改到的最终目录匹配的 willdcard 来简化。您可以先检查 stepwat
和 files.in
是否存在,然后再尝试使用它们。
#!/bin/bash
for dir in ~/Trinchera/shell_example/*/test/inputs; do
if [ -x "$dir/stepwat" ] && [ -r "$dir/files.in" ]
then
cd "$dir"
./stepwat -f files.in -o
fi
done
这就是我的 shell 脚本目前的样子
#!/bin/bash
for dir in ~/Trinchera/shell_example/*; do
cd $dir
cd test/inputs/
./stepwat -f files.in -o
wait
done
它 运行 成功了,但是它在实际 运行ning 之前首先显示了这个错误消息。
./loop_60_stepwat.sh: line 13: cd: test/inputs/: No such file or directory
./loop_60_stepwat.sh: line 15: ./stepwat: No such file or directory
./loop_60_stepwat.sh: line 11: cd: /home/harley/shell_example/run_60_stepwat.sh: Not a directory
./loop_60_stepwat.sh: line 13: cd: test/inputs/: No such file or directory
./loop_60_stepwat.sh: line 15: ./stepwat: No such file or directory
结果不错,但我想知道错误是什么意思,因为它仍然 运行 脚本正确。
我想在 运行 脚本时解决或消除此错误消息。 我认为该错误可能与 cd $dir
部分,因为我不确定如何正确地 cd 进入所选目录,它现在似乎可以解决问题。
*顺便说一句,每个目录下的所有文件和文件夹都完全相同,只是目录名称不同。
此外,由于我是初学者,如果对我的格式提出任何意见或反馈,我将不胜感激。
您的 shell_example
目录包含没有 test/inputs
子目录的子目录。这会导致第一个“没有这样的文件或目录”错误。
“不是目录”错误是因为一些匹配通配符的名称是文件,而不是目录,所以您不能 cd
它们。
当这些 cd
命令失败时,您最终会进入一个不包含 stepwat
的目录,因此您在尝试 运行 该命令时会遇到错误。
您可以使用与您要更改到的最终目录匹配的 willdcard 来简化。您可以先检查 stepwat
和 files.in
是否存在,然后再尝试使用它们。
#!/bin/bash
for dir in ~/Trinchera/shell_example/*/test/inputs; do
if [ -x "$dir/stepwat" ] && [ -r "$dir/files.in" ]
then
cd "$dir"
./stepwat -f files.in -o
fi
done