【发布时间】:2017-06-08 22:07:42
【问题描述】:
在我的 while 循环中,我正在做一个测试,但这似乎真的是多余的,我认为可能有更好的解决方案来实现这个,比如“案例”结构?如果有人可以推荐如何减少冗余,那就太好了,谢谢!基本上,我怎样才能更好地重组这个循环?
循环:
if [ "$cursor" -eq "1" ]
then
Links="Links: $(ls -ld / | cut -d" " -f2)"
Owner="Owner: $(ls -ld / | cut -d" " -f3)"
Group="Group: $(ls -ld / | cut -d" " -f4)"
Size="Size: $(ls -ld / | cut -d" " -f5)"
Modified="Modified: $(ls -ld / | cut -d" " -f6-8)"
echo "$Links $Owner $Group $Size $Modified"
elif [ "$cursor" -eq "2" ]
then
Links="Links: $(ls -ld /home | cut -d" " -f2)"
Owner="Owner: $(ls -ld /home | cut -d" " -f3)"
Group="Group: $(ls -ld /home | cut -d" " -f4)"
Size="Size: $(ls -ld /home | cut -d" " -f5)"
Modified="Modified: $(ls -ld /home | cut -d" " -f6-8)"
echo "$Links $Owner $Group $Size $Modified"
elif [ "$cursor" -eq "3" ]
then
Links="Links: $(ls -ld ~ | cut -d" " -f2)"
Owner="Owner: $(ls -ld ~ | cut -d" " -f3)"
Group="Group: $(ls -ld ~ | cut -d" " -f4)"
Size="Size: $(ls -ld ~ | cut -d" " -f5)"
Modified="Modified: $(ls -ld ~ | cut -d" " -f6-8)"
echo "$Links $Owner $Group $Size $Modified"
else
temp=`expr $cursor - 1`
curDir=${currentdir[$temp]}
Links="Links: $(ls -ld $curDir | cut -d" " -f2)"
Owner="Owner: $(ls -ld $curDir | cut -d" " -f3)"
Group="Group: $(ls -ld $curDir | cut -d" " -f4)"
Size="Size: $(ls -ld $curDir | cut -d" " -f5)"
Modified="Modified: $(ls -ld $curDir | cut -d" " -f6-8)"
echo "$Links $Owner $Group $Size $Modified"
fi
【问题讨论】:
-
你真的不应该解析
ls的输出。见BashFAQ #3 和mywiki.wooledge.org/ParsingLs -
(即使您打算这样做,运行
lsonce 并阅读该单曲会更明智调用的输出分为五个字段,而不是单独运行五次并每次提取一个字段)。 -
如果你有 GNU stat,你可以真正制作一个
stat -c调用,在一个命令中发出你的链接、所有者、组、大小和 mtime 输出。