首页 > 解决方案 > 用于测试文件读/写直到手动停止的简单 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

但想知道是否有更好的单线方法可以做到这一点?

如果连接丢失,它是否可以在一两秒后重试。

标签: bash

解决方案


一个班轮通常不会真正保证代码的可读性和性能高效。

您可以改进您的逻辑的是仅打开文件以进行附加,并在您无法打开文件时查看它是否在第一个实例上成功和失败

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

推荐阅读