bash - 如何在for循环中使用计数器作为bash文件中的输入
问题描述
我想多次运行 ac 代码。在 c 代码中,变量 ( n
) 从命令行读取一个值。我想写一个 bash 文件来为我做这件事。但我不知道如何在 bash 文件的循环中读取值。bash 文件是这样的:
#!/bin/bash
EXE=exc3_1
RES=$EXE.d
for i in 2 4 8 16
do
COMMAND="mpirun -n $i $EXE >> $RES"
echo $COMMAND
eval $COMMAND
done
gnuplot << EOF
set datafile separator " "
set xlabel "Num of procs"
set ylabel "time of operation"
set title "weak scaling of trapezoidal rule"
plot $RES
EOF
在命令之后,eval $COMMAND
我应该读取n
.
“已编辑”,该值n
应用于 ac 代码中的输入参数,如下所示:
scanf("%d", &N);
我的意思是在 bash 文件的每次迭代中,应该从命令行读取 N 并用作
scanf("%d", &N);
在交流代码中。
解决方案
要使用命令行输入作为文件的输入,|
可以使用管道运算符,例如
read n
echo $n | eval $COMMAND
所以bash文件应该修改如下:
#!/bin/bash
EXE=exc3_1
RES=$EXE.d
for i in 2 4 8 16
do
COMMAND="mpirun -n $i $EXE >> $RES"
echo $COMMAND
read n
echo $n | eval $COMMAND
done
gnuplot << EOF
set datafile separator " "
set xlabel "Num of procs"
set ylabel "time of operation"
set title "weak scaling of trapezoidal rule"
plot $RES
EOF
推荐阅读
- azure - 使用 Powershell 的 Azure 成本警报
- python - 无论如何,我可以记录不规则阵列的形状吗?
- flutter - 如何在 Flutter 中使用 multi_image_picker 调整图像大小?
- python - OpenCv 形状检测到形状转换(Python)
- jquery - 有什么方法可以检查 slick 中的所有图像是否都已加载?
- android - 从 Azure Active Directory B2C Android/Java 中删除用户
- sql-server - 创建一个 Select 语句,该语句确定 2 个日期之间的持续时间,拆分为 2 个日期中的每个日期
- java - 在 Spring MVC 中显示带有复选框的列表列表
- r - 在 R 中出现错误“文件错误(文件,“rt”):无法打开连接”
- python - 我没有在 python 中获得所需的输出