我有一个 C 语言的程序,它有两个参数,文件名和文本。我想在 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
并且它应该将来自 /tmp
的所有 txt
文件作为参数,并且'hello' 作为我的 C 程序的文本。不,它只显示 Give 2 args!
:( 请帮忙。
最佳答案
现在您实际上并没有将任何参数传递给脚本中的程序。
正常传递参数即可:
./app "$file" "$text"
我将参数放在双引号中以使 shell 将变量视为单个参数,以防它们包含空格。
关于c - 如何在 bash 脚本中运行一个 c 程序并给它 2 个参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14601430/