![如何使每个脚本运行时期望不同的内部变量值?](https://linux22.com/image/127633/%E5%A6%82%E4%BD%95%E4%BD%BF%E6%AF%8F%E4%B8%AA%E8%84%9A%E6%9C%AC%E8%BF%90%E8%A1%8C%E6%97%B6%E6%9C%9F%E6%9C%9B%E4%B8%8D%E5%90%8C%E7%9A%84%E5%86%85%E9%83%A8%E5%8F%98%E9%87%8F%E5%80%BC%EF%BC%9F.png)
寻求建议。编写一个简单的 bash 脚本。它将每 30 分钟检查文件夹中收入文件的百分比。因此,我们知道预期的文件总数以及它们应位于文件夹中的时间。
所以我陷入了附加值“验证状态”的困境。如果收入文件的百分比等于或高于预期,则验证设置状态并以 HTML 表格形式发送包含当前数据的电子邮件。因此,每个脚本都运行将数据附加到文件中,该文件将附加到 HTML 表中。
表样本:
| Time | Files count| Files rate | Status |
|14:31 21.01.18| 18567 | 15,6% | Verified |
|15:01 21.01.18| 21402 | 19,2% | Failed |
无法找到如何使相同的脚本运行并检查不同条件的解决方案。对我来说,逻辑似乎是这样的:
如果第一个脚本运行且文件速率等于或低于 15%,则状态=已验证,否则状态=失败
if [ $attemptrun -eq 2 ] && [ $filerate -gt 15 ]
then status=Verified
else
status=Failed
但是如何使每个附加脚本运行,期望并检查不同的文件速率,例如第一次运行 =< 15、第二次 =<22、第三次 =<35 等?
答案1
尝试这个 :
#!/bin/bash
while IFS='|' read -r _ time count rate status; do
((countlines==0)) && continue # skip headers
time=${time// /} # bash parameter expansion to remove spaces
count=${count// /} # same thing...
status=${status// /} # same thing...
rate=${rate// /}
echo "time=$time count=$count rate=$rate status=$status"
if ((${rate%\%} >= 15)) && [[ $status == Verified ]]; then
status=Verified
fi
((countlines++))
done < file.txt