Bash 对于Shell脚本中的循环-在csv文件中添加特征线

Bash 对于Shell脚本中的循环-在csv文件中添加特征线,bash,shell,command-line,sh,Bash,Shell,Command Line,Sh,我试图在shell脚本中使用for循环 我正在从文本文件执行命令。我希望每个命令执行10次,并在csv文件中插入一些统计信息。在该命令完成后,我想开始下一个命令,但在执行了10次的第一个命令之后,在CSV文件中放一个换行符 以下各项是否正确: #Function processLine processLine(){ line="$@" for i in 1 2 3 4 5 6 7 8 9 10 do START=$(date +%s.%N) echo "$line" eval $line >

我试图在shell脚本中使用
for
循环

我正在从文本文件执行命令。我希望每个命令执行10次,并在csv文件中插入一些统计信息。在该命令完成后,我想开始下一个命令,但在执行了10次的第一个命令之后,在CSV文件中放一个换行符

以下各项是否正确:

#Function processLine
processLine(){
line="$@"
for i in 1 2 3 4 5 6 7 8 9 10
do
START=$(date +%s.%N)
echo "$line"
eval $line > /dev/null 2>&1

END=$(date +%s.%N)
DIFF=$(echo "$END - $START" | bc)

echo "$line, $START, $END, $DIFF" >> file.csv 2>&1
echo "It took $DIFF seconds"
echo $line
done
}
谢谢大家的帮助

更新
它正确地执行了循环,但我无法让它在每个命令执行10次后添加换行符。

这看起来很合理。它能做你想做的吗

你可以简化一些事情,例如

DIFF=$(echo "$END - $START" | bc)
可能只是

DIFF=$((END - START))
如果END和START是整数,如果只使用一次,就不需要将它们放入变量中

如果它没有做你想做的,编辑问题来描述问题(你看到它在做什么,你希望它做什么)。

processLine()
{
行=“$@”
echo$line>>测试文件
对于((i=1;i>test_)文件
完成
#移动到下一行:添加打断
echo>>测试文件
}
echo-n>测试文件
进程线“ls”
processLine“find.-name”*“'

完成后添加一行“
echo>>file.csv
”怎么样?还是在每个10块之间只需要一条空行?然后可以执行以下操作:

FIRST=1
processline()
{
  if (( FIRST )) then
    FIRST = 0
  else
    echo >> file.csv
  fi
  ...rest of code...
}

否则,您可能希望给出所需输出和当前获得的输出的示例。

请注意,$END en$START包含reals。这意味着$(())不起作用,对吗?
FIRST=1
processline()
{
  if (( FIRST )) then
    FIRST = 0
  else
    echo >> file.csv
  fi
  ...rest of code...
}