Ich arbeite gerade an einer Hausaufgabe und muss einen vorgegebenen Verzeichnispfad nehmen und daraus die darin enthaltenen Dateien und Verzeichnisse auflisten. Dabei muss ich auch angeben, ob es ausführbar ist oder nicht. Ich bin außerdem dadurch eingeschränkt, dass ich keine anderen Sprachen außer Bash verwenden darf.
Mein ursprünglicher Gedanke war, zu verwenden ll
und cut
zu bekommen, was ich brauchte, aber ich konnte es scheinbar nicht zum Laufen bringen. Dann dachte ich, ich könnte etwas wie verwenden (funktioniert nicht, nur eine Idee)
read input
for f in $input
do
if [[ -x "$f" ]]
then
echo "$f is executable"
else
echo "$f is not executable"
fi
done
Ich brauche eine Ausgabe in etwa wie diese und bin nicht sicher, wie ich dorthin komme
Dateiname1 ist ausführbar
Dateiname2 ist nicht ausführbar
directory1 ist ausführbar
Antwort1
Versuchen Sie es wie
my=($(ls -la $dr |awk {'print $9'}))
echo ${my[@]}
for i in "${my[@]}"
do
if [[ -x "$i" ]]
then
echo "File '$i' is executable"
else
echo "File '$i' is not executable or found"
fi
done
Antwort2
Sie nehmen ein Verzeichnis und prüfen dann, ob das Verzeichnis selbst ausführbar ist, und sehen sich nicht, wie gewünscht, dessen Inhalt an.
read input
for f in ${input}/*; do
echo -n "$f is "
type=""
if [[ -x "$f" ]]; then
type="executable"
else
type="non-executable"
fi
if [[ -d "$f" ]]; then
type="$type directory"
fi
echo "$type"
done
Die Sicherstellung, dass der Wert $input
ein lesbares Verzeichnis ist, überlasse ich Ihnen.