#!/bin/sh
files = 'ls /myDir/myDir2/myDir3/'
for file in $files do
echo $file
java myProg $file /another/directory/
done
Run Code Online (Sandbox Code Playgroud)
我想要做的是遍历/ myDir/myDir2/myDir3 /下的每个文件名,然后使用该文件名作为调用java程序的第一个参数(第二个参数是"/ another/directory")
当我运行这个脚本时:.myScript.sh
我收到此错误:-bash:files:command not found
在我的剧本中我做错了什么?谢谢!
按照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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
并basename完全避免打电话.
| 归档时间: |
|
| 查看次数: |
3990 次 |
| 最近记录: |