在bash中创建while循环,该循环将运行特定时间

时间:2016-06-21 21:47:24

标签: bash shell loops datetime

我有兴趣在上运行的bash (version: 3.2.57(1)-release)中创建一个while循环,该循环将运行特定的秒数/分钟。

实施例

例如,我想在 5秒期间创建 n 文件,每个文件都有当前日期和时间。

方法

我的循环结构非常基础:

i=$cmd(date %ss)
j=$i + 10
while [ $i -lt $j ]
do
fileName=$cmd(cat /dev/urandom | env LC_CTYPE=C tr -cd 'a-f0-9' | head -c 32)
date > $fileName
i=date %ss
done

问题

当我尝试执行脚本时,我收到以下错误:

loop.sh: line 1: syntax error near unexpected token `('
loop.sh: line 1: `i=$cmd(date %ss)'

期望的结果:

  • i计数器反映秒数,循环在10秒后停止
  • 在当前工作目录中创建以当前日期为唯一内容的随机*.txt文件

1 个答案:

答案 0 :(得分:2)

以下内容将产生您在"期望结果"。

下所述的内容
#!/bin/bash

i="$(date +%s)"
j="$(( i + 10 ))"

while [ $i -lt $j ]; do
    fileName="$(cat /dev/urandom | env LC_CTYPE=C tr -cd 'a-f0-9' | head -c 32)"
    date > "${fileName}.txt"
    i="$(date +%s)"
done