如何在不同的终端中复制和运行命令
How to copy and run command in different terminal
我有一个简单的程序,例如在C++中
#include<iostream>
using namespace std;
int main()
{
int a, b, c;
cin >> a >> b;
c = a + b;
cout << c;
}
在这里,我需要在执行时给出a
和b
作为输入。
我需要写一个脚本,将a(比如5(和b(比如7(的值自动键入到第一个终端中。
我认为您必须更改一些内容才能做到这一点,因为您希望传递脚本中的参数。C++程序main.cpp:
#include <iostream>
#include <stdlib.h>
using namespace std;
int main(int argc,char *argv[])
{
if(argc==1)
{
exit(1);
}
int a=atoi(argv[1]);
int b=atoi(argv[2]);
cout<<a+b<<endl;
return 0;
}
shell脚本将是:
#!/bin/bash
g++ temp.cpp -o out
a=5
b=2
./out "${a}" "${b}"
您应该在这里看到传递变量的信息。另请参阅
与其尝试编写一个与多个终端交互或与管道一起工作的程序(这可能会更复杂(,我建议通过让它处理命令行参数来简化程序。您可以按照如下方式重新编写您的C++程序:
#include <iostream>
#include <cstdlib> // for atoi function
using namespace std;
int main(int argc, char* argv[]) // to accept CLI inputs
{
// argv[0] has path/name to this program
// argv[1] has 1st argument, if provided
// argv[2] has 2nd argument, if provided
// if argc != 3, then we don't have everything we expected, and we bail
if(argc != 3) {
cerr << "usage: " << argv[0] << " arg1 arg2" << endl;
return -1;
}
// for simplicity, we assume that you won't get letters, only numbers
int a = atoi(argv[1]);
int b = atoi(argv[2]);
cout << (a + b);
return 0;
}
然后,您可以编写一个简单的shell脚本,用您想要的任何参数启动程序。例如,如果您构建的程序名为test
(使用g++ -o test test.cpp
进行构建(,那么您可以使用以下示例launcher.bash
脚本:
#!/bin/bash
for i in {0..10}
do
./test $i $i
echo
done
脚本产生以下输出:
/tmp ❯ ./launcher.bash
0
2
4
6
8
10
12
14
16
18
20
如果可执行文件是a.out,则可以使用
a=5;b=7;echo $a $b | ./a.out
顺便说一句,在您的示例中,缺少cout/cin的命名空间(例如,在#include之后添加using namespace std;
(。
相关文章:
- 将一个数组复制到函数内的另一个数组时的运行时指针异常
- STM32F4 - 在运行时将函数从闪存复制到RAM
- 我的程序运行良好,可以复制对象,但是当我使用复制分配(=)时,它仍然可以正常运行.为什么不给错误
- 字符* 复制到另一个字符* 运行时错误
- C++中的运行时位复制(位掩码)
- 我无法使用 c++(代码块)中的 fstream 将文件内容复制到另一个。如何运行该文件?
- C 复制构造函数产生运行时错误
- 矢量未正确擦除内容(复制分配运算符的量运行直到崩溃 [BEX])
- 使用 memcpy 将动态数组的内容复制到另一个动态数组上会产生运行时错误
- 无法通过循环运行我的代码,但是手动复制和粘贴有效
- 复制 CImage 会导致运行时错误
- 不带操作员的对象的数组初始化,复制构造函数或默认构造函数和运行时参数
- 我试图运行将文本从一个文件复制到另一个文件的程序
- 传递指针以运行而不复制它
- 如何使用运行时选择基 CTOR 初始化不可复制的基类
- 为什么我遇到此代码的分段错误?此代码几乎没有运行,因此构造函数或复制构造函数中可能存在错误
- 使用节点的深度复制队列运行时错误
- clang与gcc运行时的区别:用clang构建的c++类模板在没有复制构造函数的情况下崩溃,用复制构造函数构建的gcc
- 将为此代码运行复制构造函数
- 没有存储在变量中的参数会在运行时被复制吗?