Ich schreibe ein Skript, das alle .gz-Dateien in jedem Verzeichnis findet. Der folgende Code funktioniert im Terminal, stürzt aber beim Ausführen des Shell-Skripts ab.Bash-Shell-Skript: f: Befehl nicht gefunden
#!/bin/bash
# Find all directories in Output directory
dirs=($(find ~/Documents/MainDir/$(date +%Y-%m-%d)/Output -type d)) && wait
# Concatenate all .gz files in a dir, unzip gzip & remove unwanted files
for dir in $dirs
do
if f in $(find . -name "*.gz")
then
cd $dir; cat *.gz > output.gz && gunzip -d output.gz && find . -type f -not -name 'output' | xargs rm
fi
done
Zuerst habe ich versucht, das Skript auszuführen, ohne ‚zu tun‘, die in
führtensyntax error near unexpected token `if'
`if f in $(find . -name "*.gz")'
Nach dem Hinzufügen tue ich die folgende Fehlermeldung erhalten:
f: command not found
Wie beheben dieses Problem? Thx
Verwenden http://www.shellcheck.net/ und es ist 'für ... in'' nicht, wenn ... in' – user3439894
andlrc, 'wenn f in $ (find. -name "* .gz") '** ist keine korrekte Form ** einer' if'_Anweisung_! Schauen Sie sich [7.1. Einführung in if] (http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html) und [Bedingt (Computerprogrammierung)] (https://en.wikipedia.org/wiki/Conditional_ (computer_programming)) – user3439894
@andlrc, ich habe nie das _keyword_ 'in' in Verbindung mit dem _keyword_' if' wie im OP gesehen, noch wird es in einem der beiden Links meines vorherigen Kommentars verwendet. Sofern Sie keine gültige _boolean condition_ 'if'-Anweisung angeben können, die auch das _keyword_' in' verwendet, in dem ich mit ... testen kann, muss ich zu meinen vorherigen Kommentaren stehen. Ich bin zwar bereit, mich zu lehnen, aber ich sehe nichts richtiges in 'if f in $ (find. -name" * .gz ")' als korrekte und/oder richtige Form einer 'if'-Anweisung_! – user3439894