bash - 用于测试文件读/写直到手动停止的简单 bash 脚本?
问题描述
我需要测试对磁盘的读/写访问,直到我手动终止我的测试。
现在我有这个:
filename='test.txt'
touch $filename
count=0
while [ 1 ];
do
echo "test-content-$count" > $filename
cat $filename
((count=count+1))
test $? -gt 128 && break;
done
但想知道是否有更好的单线方法可以做到这一点?
如果连接丢失,它是否可以在一两秒后重试。
解决方案
一个班轮通常不会真正保证代码的可读性和性能高效。
您可以改进您的逻辑的是仅打开文件以进行附加,并在您无法打开文件时查看它是否在第一个实例上成功和失败
while :; do
if ! ( [ -e "$filename" ] && >> "$filename" ); then
printf '%s\n' "$?"; break
fi
done
当文件无法打开时,上面的代码将在第一个实例中退出,即当>> "$filename"
返回一个非零退出代码并且退出代码的反转使用!
将断言if
条件为真。此时您可以跳出循环并打印返回的错误代码。
要再次重试写入,一旦失败,请删除break
并添加continue
while :; do
if ! ( [ -e "$filename" ] && >> "$filename" ); then
printf '%s\n' "$?"; sleep 10
continue
fi
done
推荐阅读
- html - Angular6材料表宽度错误
- scala - 使用 spark scala 远程连接 hbase
- d3.js - DC.js 地图叠加
- php - SQL:无法将动态变量设置为 OFFSET
- php - 调试 SMTP 邮件
- asp.net-mvc - ASP.NET MVC 5 HttpPostedFileBase 在模型中始终为空
- html - bootstrap :当列向下时生成空白区域以进行响应式使用
- react-native - source.pipe 不是带有 redux-observable / rxjs/operators 的函数
- nunit - NUnit.Engine.NUnitEngineUnloadException :遇到多个异常。检索 AggregatedExceptions 属性以获取更多信息
- android - 崩溃时的 Crashlytics customkey 报告