我有一个 C 语言程序,它有 2 个参数,文件名和文本。我想在 bash 中编写一个脚本,该脚本还接受 2 个参数,路径和文件扩展名,将遍历给定路径中的所有文件,并将 C 语言中的程序作为参数文件提供给仅具有给定扩展名和文本的参数文件。
这是我的 C 程序,没什么特别的:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
if(argc < 3)
{
fprintf(stderr, "Give 2 args!\n");
exit(-1);
}
char *arg1 = argv[1];
char *arg2 = argv[2];
fprintf(stdout, "You gave: %s, %s\n", arg1, arg2);
return 0;
}
和我的 bash 脚本:
#!/bin/bash
path=$1
ext=$2
text=$3
for file in $path/*.$ext
do
./app |
{
echo $file
echo $text
}
done
我像这样使用它:./script /tmp txt hello
它应该将所有txt
文件作为参数提供,/tmp
并将“你好”作为文本提供给我的 C 程序。不,它只显示Give 2 args!
:(请帮忙。