将文件名作为参数传递给函数的脚本

时间:2017-03-14 14:20:20

标签: bash command-line-arguments

我有一个名为threshold的程序。我在名为images的目录中有一组图像。

$./myscript images 

如何编写bash脚本,以便它接受目录名作为参数,并将目录中的每个文件单独作为参数传递给程序threshold.exe。

如果我执行,

./threshold.exe img_1.jpg

最终的执行应该是这样的。

./threshold.exe img_2.jpg
....
....
./threshold.exe img_n.jpg
{{1}}

2 个答案:

答案 0 :(得分:1)

假设您在Windows环境中。

forfiles /p %1 /m *.jpg /c "cmd /c threshold.exe @file"

- 对于路径(/p)%1

中的每个文件

- %1是传递的参数,也就是您要搜索的文件夹

- 运行命令(/ccmd /c threshold.exe @file

- @file表示jpg文件的路径

答案 1 :(得分:0)

#!/bin/bash
for dir; do
  for f in "$dir"/*; do
    ./threshold.exe "$f"
  done
done

表现如下:

  • 首先,迭代命令行参数,将每个参数视为目录
  • 接下来,迭代当前目录中的文件
  • 然后,为每个文件调用可执行文件

请注意,这将采用./threshold.exe images/img_1.jpg形式而不是./threshold img_1.jpg形式 - 这是必要的,以便我们从实际<的目录中运行./threshold.exe em>包含 threshold.exe,并且仍然提供文件的有效相对路径。