Bash-Shell-Schleife durch Verzeichnisliste mit Inhalt und Ausführbarkeit

Bash-Shell-Schleife durch Verzeichnisliste mit Inhalt und Ausführbarkeit

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 llund cutzu 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 $inputein lesbares Verzeichnis ist, überlasse ich Ihnen.

verwandte Informationen