用于从c ++程序

时间:2016-07-16 14:09:30

标签: bash

我是脚本新手。在尝试执行以下操作时遇到问题。请帮忙。

我的C ++程序在while循环中运行,在提示符下接收来自用户的命令,然后执行它们。我想自动化这个过程。

示例执行

$ ./my_tool

my_prompt> command1 arg1 arg2

result: abc

my_prompt> command2 arg3

result: xyz

my_prompt> command3 abc xyz

result: my_result

my_prompt> exit

$

现在,我想要一个文件input.txt,它将具有

command1 arg1 arg2
command2 arg3
command3 <abc> <xyz>
exit

脚本的执行类似于

./run ./my_tool input.txt

如何编写一个简单的bash脚本来实现这一目标?我将至少有20个命令。

如果我没有命令3,即所有输入参数都已预先确定,那么我该如何进行?

很抱歉,如果这很简单 - 我无法理解。

谢谢和问候, SB

1 个答案:

答案 0 :(得分:0)

您可以将文件逐行传递给二进制文件stdin:

<?php
    function something(){
        //some code
        $whatever  = 3;
        $some      = ["Peace", "Amongst", "All", "Humanity"];
        return $some[$whatever];
    }

    $var = something();

    var_dump($var); //<== DUMPS :: "Humanity"
    echo $var;      //<== ECHOES:: "Humanity"

快速解释: IFS的东西将确保文件将逐行读取,否则它将在每个空格上创建一个新的迭代。行#!/bin/bash while IFS='' read -r line || [[ -n "$line" ]]; do eval $1 < $line done <<< "$2" ./my_tool < $line作为$line传递给您的程序,因此stdin缓冲区(您将从中读取用户输入)填充数据,因此您的程序将读取“输入” 。 stdin将第一个参数作为文件传递给while循环输入,其中done < "$2"将读取输入。 read将是您在执行时传递脚本的文件名。 $2将运行存储在eval $1中的命令,该命令是脚本的第一个参数。

使用它运行:

$1