当前位置:  开发笔记 > 编程语言 > 正文

使用read命令解析linux shell脚本中的du -s输出

如何解决《使用read命令解析linuxshell脚本中的du-s输出》经验,为你挑选了2个好方法。

我正在尝试编写一个shell脚本来执行操作,如果用户主目录超过一定大小.不幸的是,当我尝试使用read命令分割du -s输出时,我得到'命令未找到',因为它试图将数字传递给shell,而不是像我想要的那样传递给变量.这是我到目前为止脚本的内容.

#!/bin/bash
cd /home
for i in `ls`
do
    j=`du -s $i`
    #this line gives me the error
    k=`$j |read first;`
done

我得到如下输出:

./takehome.sh: line 6: 3284972: command not found

其中3284972是目录的大小.



1> Andy..:

我想你会想要一些东西

#!/bin/bash
for i in *
do
    j=`du -s "$i" | cut -f 1`
    echo $i size is $j
done

读入另一个变量,读取和播放它似乎是多余的.

我相信更优雅的解决方案是Jonathan Leffler的第二种方法(复制粘贴在这里)

#!/bin/bash
cd /home
du -s * |
while read size name
do
    ...
done



2> Jonathan Lef..:

至少有两种方法可以做到这一点:

方法1:

#!/bin/bash
cd /home
for i in `ls`
do
    set -- `du -s $i`
    size=$1
    name=$2
    ...
done

方法2:

#!/bin/bash
cd /home
du -s * |
while read size name
do
    ...
done

推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有