innerhalb meiner while-Schleife mache ich einen Test, aber es scheint wirklich redundant und ich denke, es könnte eine bessere Lösung sein, um dies wie eine "Fall" -Struktur möglicherweise zu implementieren? Wenn jemand empfehlen kann, die Redundanz zu reduzieren, wäre das wunderbar, danke! Grundsätzlich, wie kann ich diese Schleife besser strukturieren?make loop lesen klarer
die Schleife:
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
Sie ** wirklich ** sollte nicht die Ausgabe von 'ls' analysieren. Siehe [BashFAQ # 3] (http://mywiki.wooledge.org/BashFAQ/003) und http://mywiki.wooledge.org/ParsingLs –
(und selbst wenn Sie * dies tun würden, würde es Es ist viel sinnvoller, 'ls' * einmal * auszuführen und die Ausgabe dieses einzelnen Aufrufs in fünf Felder zu lesen, statt sie fünfmal auszuführen und jeweils ein Feld zu extrahieren. –
Wenn Sie GNU stat haben, könnten Sie buchstäblich einen einzigen 'stat -c'-Aufruf erstellen, der Ihre Link-, Eigentümer-, Gruppen-, Größen- und mtime-Ausgabe in einem einzigen Befehl ausgibt. –