Bash脚本在没有输入重定向的情况下为c ++文件输入输入

时间:2013-02-26 20:00:04

标签: bash

这就是我所拥有的“

#!/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的内容,我确实想要文件的实际名称而不是内容

3 个答案:

答案 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 *stdoutstd::cout相关联的文件描述符STDOUT_FILENO。

<重定向与FILE *stdinstd::cin相关联的文件描述符STDIN_FILENO。

答案 2 :(得分:0)

只是关于你循环的评论,另一种更简单的写作方式是

#!/bin/bash

for i in {0..2}
do
    echo $i
done