unix - 在 UNIX shell 脚本中为每“n”次执行引入等待时间
问题描述
我有 2 个文件:file.dat和mapping.dat。
file.dat包含条目(可以包含重复项),mapping.dat是一个静态文件,其中包含条目及其对应的会话/作业名称,以逗号分隔。我开发了一个简单的 UNIX Shell 脚本,它在循环中运行,对于 file.dat 中的每个条目,它会在 mapping.dat 中搜索会话/作业名称并显示输出。
file.dat 的内容
ekm
ckm
cnc
cnx
ekm
hnm
dam
mapping.dat 的内容
#Entry,Job_Name#
ckm,BDSCKM
cnc,BDSCNC
cnx,BDSCNX
ekm,BDSEKM
azm,BDSAZM
bam,BDSBAM
cam,BDSCAM
oid,BDSOID
hnm,BDSHNM
dam,BDSDAM
当前脚本:
#!/bin/ksh
for FILE in `cat file.dat`
do
SESSION=`grep $FILE mapping.dat | cut -d, -f2`
echo "For ${FILE}, Session launched is: ${SESSION} "
done
电流输出
For ekm, Session launched is: BDSEKM
For ckm, Session launched is: BDSCKM
For cnc, Session launched is: BDSCNC
For cnx, Session launched is: BDSCNX
For ekm, Session launched is: BDSEKM
For hnm, Session launched is: BDSHNM
For dam, Session launched is: BDSDAM
我的问题是我想为每 2 次输出引入一个等待/睡眠时间,即它应该首先显示
For ekm, Session launched is: BDSEKM
For ckm, Session launched is: BDSCKM
等待 90 秒,然后
For cnc, Session launched is: BDSCNC
For cnx, Session launched is: BDSCNX
..等等
解决方案
尝试使用模运算符 %
帮助自己。
#!/bin/ksh
count=1
for file in $( cat file.dat )
do
session=$( grep $file mapping.dat | cut -d, -f2 )
echo "For ${file}, session launched is ${session}."
if (( count % 2 == 0 ))
then
sleep 90
fi
(( count++ ))
done
推荐阅读
- python - 在 python 中创建 inode 时,`mode` 的每个字符是什么意思?
- python - 在 linux 中使用虚拟 venv 安装新的 python 版本
- java - 我见过人们在函数结束时使用 return -1 。它实际上是什么意思?
- python - ValueError:参数 U 的大小为 4,与 1 不匹配,即箭头位置的数量
- gams-math - 计算 MIP 问题 GAMS 中的相对最优性差距
- bash - bash 将文件中的所有数字乘以一个常数
- javascript - 如何在 Node.js 和 TypeScript 中构建可读流?
- node.js - 猫鼬如何在数组中查找对象
- java - 使用 @OneToOne 注释保存外键的问题。保存为空
- javascript - 有没有办法检查频道覆盖?(Discord.js v12)