我正在尝试编写一个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是目录的大小.
我想你会想要一些东西
#!/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
至少有两种方法可以做到这一点:
#!/bin/bash cd /home for i in `ls` do set -- `du -s $i` size=$1 name=$2 ... done
#!/bin/bash cd /home du -s * | while read size name do ... done