循环:
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
答案 0 :(得分:0)
你可以做到这一点没问题。在处理此问题时,请考虑在语句中更改哪条信息,请使用变量来存储此信息。最后尝试通过使用函数,变量和排序来减少重复行。
将以下块移出if / else语句。在每个if语句中,设置变量curDir =“[dir]”
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"
答案 1 :(得分:0)
#!/bin/bash
cursor="$1"
case "$cursor" in
1) curDir="/"
;;
2) curDir="/home"
;;
3) curDir="${HOME}"
;;
*) curDir=${currentdir[$temp]}
;;
esac
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"
答案 2 :(得分:0)
我同意,抓取ls
不是最好的,但我不确定你的用例是什么。这是我提出的解决方案:
#!/bin/bash
my_stat()
{
path="$1"
IFS=":" read links owner group size modified <<<$(ls -ld $path | awk '{print $2":"$3":"$4":"$5":"$6" "$7" "$8}')
echo "$links $owner $group $size $modified"
}
case $cursor in
1) my_stat /;;
2) my_stat /home;;
3) my_stat ~;;
*) temp=$((cursor - 1))
curDir="${currentdir[$temp]}"
my_stat "$curDir"
;;
esac
即使这可能不是实现目标的最佳方式。对我而言,有一点是$cursor
变量。对我来说,这是你想要在这里完成的事情的一个谜。无论如何,希望这有点帮助。