我在〜/ .bashrc中设置了以下别名。它从连接到服务器的某些传感器打印数据。我想将其压缩为for循环,但无法使循环成功运行。我工作的非循环语法如下。 vd
是此服务器上的可执行文件,用于打印数据。在这里,我有参数从特定传感器-n5
打印5行数据-s ${scylpres[n]}
,然后过滤输出,因此它只打印带有","的行。分隔符cut -d',' -s -f1-
。
scylpres=($(eproms | grep -i 'trtl' | grep -i 'cylinder pressure' | cut -d',' -f3));
alias cylpres='vd -n5 -s ${scylpres[0]} | cut -d',' -s -f1- &&
vd -n5 -s ${scylpres[1]} | cut -d',' -s -f1- && vd -n5 -s ${scylpres[2]} | cut -d',' -s -f1- && vd -n5 -s ${scylpres[3]} | cut -d',' -s -f1- &&
vd -n5 -s ${scylpres[4]} | cut -d',' -s -f1- && vd -n5 -s ${scylpres[5]} | cut -d, -s -f1-';
我正在努力将其包装成for循环。我试过了:
i=0;
function cpres {
for i in {0..${scylpres[@]}}
do
vd -n5 -s ${scylpres${i}} | cut -d',' -s -f1-
done
};
并且:
start=0;
stop=${scylpres[@]};
function cpres {
for((i=$start;i<=$end;i++))
do
vd -n5 -s ${scylpres[$((i++))]} | cut -d',' -s -f1-
done
};
并尝试过两种版本的i调用。例如,${scylpres[$i]}
,${scylpres[$(i)]}
,${scylpres$[((i++))]}
但是,我所看到的只是我的命令行转到>
。