Sto cercando di scrivere una semplice funzione bash che prende, come argomenti, un numero di file e / o directory. Dovrebbe:
- Qualificare completamente i nomi dei file.
- Ordinali.
- Rimuovi duplicati.
- Stampa tutto ciò che esiste realmente.
- Restituisce il numero di file inesistenti.
Ho una sceneggiatura che fa quasi quello che voglio, ma cade nell'ordinamento. Il valore restituito dello script così com'è è corretto, ma l'output non lo è (non ordinato e duplicato). Se decomprimo l' | sort -u
istruzione come indicato, l'output è corretto ma il valore restituito è sempre 0
.
NB Le soluzioni più semplici per risolvere il problema sono benvenute, ma la domanda riguarda davvero il motivo per cui ciò accade nel codice che ho. Cioè, perché l'aggiunta della pipe sembra fermare lo script incrementando la variabile r
?
Ecco la sceneggiatura:
function uniqfile
{
local r=0
for arg in "$@"
do
readlink -e "$arg" || (( ++r ))
done #| sort -u ## remove that comment
return $r
}
for arg in "$@"
afor arg
. "If 'in WORDS ...;' non è presente, quindi si presuppone che "in" $ @ "". - aiuto per