试图从现有的 for 循环中读取文件

Posted

技术标签:

【中文标题】试图从现有的 for 循环中读取文件【英文标题】:Trying to read from file within existing for loop 【发布时间】:2015-09-11 09:24:16 【问题描述】:

您好,我很难弄清楚如何完成我编写的现有脚本。简而言之,我正在尝试根据现有用户为任何没有将配额设置为 100MB 或 102400 的用户设置磁盘配额,如下所示。该逻辑目前似乎有效,但我已经没有关于如何填充 $USER 变量的想法。任何帮助将不胜感激。

AWK=$(awk ' print $4 ' test.txt)

USER=$(awk ' print $1 ' test.txt)

for quota in $AWK;
do
    if [ "$quota" = 102400 ];
    then
        echo "Quota already set to 100MB for user: "$USER""
    else
        echo "Setting quota from template for user: $USER "
        edquota -p username "$USER"
    fi
done

test.txt 文件如下:

user1   --  245 0   0
user2   --  245 102400  102400
user3   --  234 102400  102400
user4   --  234 1   0

【问题讨论】:

【参考方案1】:

使用从文件中读取两个变量的单个循环:

while read -r user a b quota c; do
    if [ "$quota" = 102400 ];
    then
        echo "Quota already set to 100MB for user: "$user""
    else
        echo "Setting quota from template for user: $user "
        edquota -p username "$user"
    fi
done < test.txt

abc 变量仅用于跳过输入文件中的这些字段。

【讨论】:

以上是关于试图从现有的 for 循环中读取文件的主要内容,如果未能解决你的问题,请参考以下文章

试图将文件读入结构数组,但 for 循环仅显示第一个索引而其余索引为零?

如何使用 for 循环在 Matlab 中读取许多声音文件?

for 循环读取文件

从文件 c++ 读取和写入的循环问题

在 C++ 中读取文件:for 和 while 嵌套循环没有按预期工作:串行?

使用for循环bash脚本逐行读取文件[重复]