【问题标题】:Running various command in one file in terminal在终端的一个文件中运行各种命令
【发布时间】:2017-02-07 11:11:43
【问题描述】:
我遇到一个学校作业,要求我们编译一个c文件并运行各种参数来执行并得到结果,我必须手动将参数行一一键入。
我想知道有没有办法通过将命令写入文件并立即运行来执行命令?类似于 makefile 的东西,但用于命令行而不是编译。
例如:
我必须运行一个需要我手动输入的程序
./program 10
./program 100
./program 1000
./program 10000
./program ....
./program ....
./program .....
有没有一种方法可以将所有这些写入一个文件并立即运行它而无需手动键入所有内容?
谢谢!
【问题讨论】:
标签:
command-line
terminal
command-line-arguments
【解决方案1】:
是的,您可以为此使用 Makefile:添加一个 test 目标并将所有测试用例编写为该目标的命令。还要让这个目标依赖于可执行文件,所以你只需要重新编译和运行测试就是make test
【解决方案2】:
编写如下脚本:
#!/bin/bash
for i in 10 100 1000; do
./program $i
done
另存为go。
使其可执行:
chmod +x go
运行它:
./go
【解决方案3】:
Windows 批处理示例 (source)
for %%s in ("10" "100" "1000" "10000") do call program.exe %%s
- 保存在文本文件中,例如loop.bat(与 program.exe 位于同一位置)
- 打开 cmd.exe (Windows + R -> cmd.exe -> 回车)
- 导航到loop.bat的位置
- 输入“loop.bat”
Windows powershell 示例 (source)
$array = @("10", "100", "1000")
foreach ($element in $array) {
& .\program.exe $element
}
- 保存在文本文件中,例如loop.ps1(与 program.exe 位于同一位置)
- 打开 powershell(Windows 键 + R -> powershell -> 回车)
- 导航到loop.ps1的位置
- .\loop.ps1
【解决方案4】:
当然,
将所有命令行放到一个文件中,文件中每行一个命令行,
在 linux 中,我们调用那个文件:values
./program .value.
每个值一行。
然后执行文件。
source values
或
. values
在 windows 中调用该文件 values.bat
然后用
执行文件
values.bat
【解决方案5】:
您可以使用&& 运算符;
./program 10 && ./program 100 && ...
在技术说明上使用&& (essentially a logical AND) 通常意味着只有在前一个命令成功时才会执行后续命令(即返回0)。