Ach sorry, mein Korrekturhinweis war Blödsinn, denke ich.
Dieses Konstrukt in Zeile 65 und darunter ist mir echt zu unübersichtlich. Da sehe ich nicht so ganz, was da passiert/passieren soll.
Ich würde erst einfach mal den Hinweisen von shellcheck folgen und das Leerzeichen hinter dem = entfernen.
Mach natürlich erstmal ein Backup von dem Skript bzw. stelle es unter Versionskontrolle, damit Du unbesorgt dran rumbasteln kannst.
Also, was dieser Teil genau tun soll, ist mir unklar:
PROFILE= find "$XCSOAR_PATH" -maxdepth 1 -type f -name '*.prf' -exec sh -c '
for PROFILE;
do
mkdir -p /home/root/profile-settings
PROFILE_FILE=`basename "$PROFILE"`
PROFILE_NAME=${PROFILE_FILE%.*}
if lsattr "$PROFILE" | cut -b 5 | fgrep -q i;
then echo protected
else echo unprotected
fi > /home/root/profile-settings/$PROFILE_NAME
done
' -- {} +
Du weißt dem PROFILE etwas zu und innerhalb des Befehls der Zuweisung verwendest Du eine for-Schleife über PROFILE?
Gefühlt würde ich das so machen, aber ich kann es ja leider nicht richtig testen:
PROFILE=$(find "$XCSOAR_PATH" -maxdepth 1 -type f -name '*.prf')
for PROFILE;
do
mkdir -p /home/root/profile-settings
PROFILE_FILE=`basename "$PROFILE"`
PROFILE_NAME=${PROFILE_FILE%.*}
if lsattr "$PROFILE" | cut -b 5 | fgrep -q i;
then echo protected
else echo unprotected
fi > /home/root/profile-settings/$PROFILE_NAME
done
Oder vielleicht lieber mit while-Schleife:
while read PROFILE; do
......
done < <(find "$XCSOAR_PATH" -maxdepth 1 -type f -name '*.prf');