2017-05-16 2 views
0

Comment créer un tableau de fichiers dans shell. Est-ce justeDans Shell, comment puis-je créer un tableau de fichiers et comment l'utiliser pour le comparer à un autre fichier?

files = (file1.txt file2.txt file3.txt) 

ou est-il

files = ("file1.txt" "file2.txt" "file3.txt) 

Si plus tard dans le programme que je veux faire référence à ce tableau et choisir un fichier spécifique à lire, comment pourrais-je faire cela. Je demande parce que je voudrais avoir un conditionnel qui lirait ce dossier et le comparerais à un dossier de sortie.

Est-ce que je fais juste: (je sais que je ne peux pas le faire)

if grep -q ${outputs[i]} output; then 
    #etc. 

Mais que dois-je faire à la place alors?

Répondre

3

Aucun espace autour de = dans les affectations, les tableaux ne sont pas exceptionnellement. Des citations autour des noms de fichiers sont nécessaires si les noms de fichier contiennent des caractères spéciaux, par ex. espaces, parenthèses, etc.

Vous pouvez utiliser une boucle for pour marcher le tableau:

for file in "${array[@]}" ; do 
    if grep -q "$file" output ; then 

Êtes-vous sûr de vouloir utiliser le fichier $ comme l'expression régulière? Ensuite, vous devez gérer les caractères regex spécialement, c'est-à-dire point, signe d'insertion, signe dollar, etc.

Si vous souhaitez comparer le contenu des deux fichiers, utilisez diff, et non grep.

if diff -q "$file" output > /dev/null ; then 
    echo Same 
else 
    echo Different 
fi 
+0

Pourriez-vous me montrer comment j'implémenterais diff? – segfault

+0

@fwubb: Vérifiez la mise à jour. – choroba