2016-09-02 1 views
1

Ich versuche herauszufinden, die Array-Elemente sind Dateipfad oder Verzeichnispfad.Überprüfen Sie, ob der Pfad ein Verzeichnis oder eine Datei im Shell-Skript ist

#!/bin/bash 

declare -a arr=("/var/log/symantec/sgs-td","/var/lib/mysql/mysql-slow.log","/var/lib/mysql/mysql-error.log", "/var/log/sa") 

## now loop through the above array 
for i in "${arr[@]}" 
do 
if [[ -d $i ]]; then 
    echo "$i is a directory" 
elif [[ -f $i ]]; then 
    echo "$i is a file" 
else 
    echo "$i is not valid" 
    exit 1 
fi 
done 

Ich habe keine Kenntnisse der Shell-Syntax.

Wenn der Pfad ein Verzeichnis ist, dann print ..ist ein Verzeichnis oder wenn Datei dann eine Datei drucken.

+0

Was ist Ihre Frage? – Fazlin

+0

Was ist die tatsächliche Ausgabe, die Sie beim Ausführen des Skripts erhalten? – Uroc327

+0

/var/log/symantec/sgs-td,/var/lib/mysql/mysql-slow.log,/var/lib/mysql/mysql-error.log, ist nicht gültig –

Antwort

0

Der große kleine Fehler war ich Komma in Array-Liste während der Deklaration setzen. Rest Code hat kein Problem und es funktioniert gut.

#!/bin/bash 

declare -a arr=("/char/vlog/tec/sg" "/chr/lib/mysql/mysq.log" "/dar/lib/mysql/error.log" "/char/log/sua") 

## now loop through the above array 
for i in "${arr[@]}" 
do 
if [[ -d $i ]]; then 
    echo "$i is a directory" 
elif [[ -f $i ]]; then 
    echo "$i is a file" 
else 
    echo "$i is not valid" 
    exit 1 
fi 
done 
Verwandte Themen