Sto cercando di scrivere una sceneggiatura bash per i compitidomanda in cui devo accedere ad alcuni file in una cartella di origine, rimuovere tutti i commenti da loro e inviare i file non commentati (o una copia) a una cartella di destinazione, ecco il mio attuale tentativo:
#!/bin/bash
destination="$1"
source="$2"
mkdir "$destination"
files=(${$("$source"/*)})
for file in "${files[@]}"
do
grep -E -v "^[[:space:]]*[//]" "$file">> "/$destination/$file"
done
Il problema sembra essere che non sto creando il fileelementi dell'array correttamente, voglio che l'array contenga i nomi dei file nella cartella di origine, qualcuno può indirizzarmi al modo corretto di farlo (preferibilmente senza risolvere l'intero esercizio in quanto dopo tutto sono compiti a casa) /
risposte:
4 per risposta № 1Cambia questo
files=(${$("$source"/*)})
a
files=("$source"/*) # grab name of all files under $source dir and store it in array
2 per risposta № 2
In realtà non è necessario l'array e, per un gran numero di file corrispondenti, è anche più efficiente iterare direttamente sul pattern.
for file in "$source"/*; do