这就是我所拥有的“
#!/bin/bash
MAX=3
for((ctr = 0;ctr < MAX; ++ctr))
do
./make.o > out$ctr.txt
output$ctr.txt
done
所以我想把make.o的输出放到$ ctr.txt和我的make.o中我调用cin,我可以输出$ ctr.txt作为输入吗?我宁愿不使用输入重定向,因为我必须重写程序。
编辑:我不想使用&lt;因为那时它会给我文件输出$ ctr.txt的内容,我确实想要文件的实际名称而不是内容答案 0 :(得分:1)
你的意思是这样吗
./make.o < output$ctr.txt > out$ctr.txt
编辑:如果你想要这个名字,那就这样做:
./make.o output$ctr.txt > out$ctr.txt
或者这个,echo
这个名称可以从C ++中读取cin
:
echo output$ctr.txt | ./make.o > out$ctr.txt
答案 1 :(得分:0)
但你真正想要的是:
./make.o output$ctr.txt >out$ctr.txt
其中output$ctr.txt
是您程序的命令行参数。
假设有一个C ++程序,因为你提到cin
,你可以像这样处理命令行参数:
int main(int argc, char *argv[])
{
if (argc < 2) {
// argv[0] usually contains the program name
std::cerr << "missing argument\n"
<< "Syntax: " << argv[0] << " input-file\n";
return -1;
}
char *input = argv[1]; // = "output$ctr.txt"
// ...
}
听起来你只是想要;
./make.o >out$ctr.txt <output$ctr.txt
>
重定向与FILE *stdout
和std::cout
相关联的文件描述符STDOUT_FILENO。
<
重定向与FILE *stdin
和std::cin
相关联的文件描述符STDIN_FILENO。
答案 2 :(得分:0)
只是关于你循环的评论,另一种更简单的写作方式是
#!/bin/bash
for i in {0..2}
do
echo $i
done