gpt4 book ai didi

Shell 脚本调试帮助 - 遍历目录中的文件

转载 作者:行者123 更新时间:2023-12-01 09:22:50 25 4
gpt4 key购买 nike

#!/bin/sh
files = 'ls /myDir/myDir2/myDir3/'

for file in $files do
echo $file
java myProg $file /another/directory/
done

我想做的是遍历/myDir/myDir2/myDir3/下的每个文件名,然后使用该文件名作为调用 java 程序的第一个参数(第二个参数是“/another/directory”)

当我运行这个脚本时:.我的脚本.sh

我得到这个错误:-bash:文件:找不到命令

我的脚本做错了什么?谢谢!

最佳答案

根据 Neeaj 的回答,从 files = 中去除空格。

更好的是,使用:

#!/bin/sh -f
dir=/myDir/MyDir2/MyDir3

for path in $dir/*; do
file=$(basename $path)
echo "$file"
java myProg "$file" arg2 arg3
done

Bash 完全能够扩展 * 通配符本身,而无需生成 ls 的副本来完成这项工作!

编辑:更改为调用 basename 而不是 echo 以满足 OP(以前未说明)的要求,即回显的路径是相对的而不是绝对的。如果 cwd 无关紧要,那么我会更好:

#!/bin/sh -f
cd /myDir/MyDir2/MyDir3

for file in *; do
echo "$file"
java myProg "$file" arg2 arg3
done

并完全避免调用 basename

关于Shell 脚本调试帮助 - 遍历目录中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1810404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com