Ich kann das folgende Skript nicht funktionieren, wenn der Pfad ($ 1) ein oder mehrere Leerzeichen enthält. Was soll ich ändern, damit es funktioniert?Ich kann dieses Skript nicht mit Ordnern mit Leerzeichen arbeiten, wie soll ich es lösen?
#!/bin/bash
ws=/tmp/$RANDOM && mkdir $ws && cd $ws
TRG=$1 && SRC=$1
if [ "$1" != "" ];then
if [ "$3" != "" ];then
if [ "$2" == "enc" ];then
if [[ -d $1 ]];then
mv $1 ./
zip -rq "$(basename $1).zip" "$(basename $1)"
SRC="$ws/$(basename $1).zip"
fi
openssl aes-256-cbc -a -salt -in $SRC -out $TRG -pass file:<(echo -n "$3")
elif [ "$2" == "dec" ];then
mv $1 ./
SRC="$ws/$(basename $1)"
openssl aes-256-cbc -d -a -salt -in $SRC -out $TRG -pass file:<(echo -n "$3")
if grep -q "PK" <<<"$(awk 'FNR == 1 { print; exit }' $TRG)"; then
rm "$ws/$(basename $TRG)"
mv "$TRG" "$ws/$(basename $TRG)"
TRG="$ws/$TRG"
mkdir "$1"
unzip -o -qq "$(basename $TRG)" -d "$(cd $1 && cd .. && pwd)"
fi
else
echo "Incorrect operation"
fi
elif [ "$2" == "" ];then
echo "Password and mode is required"
else
echo "Password is required"
fi
else
echo "No path specificated"
fi
rm -rf $ws
Ich weiß, dass ich Anführungszeichen hinzufügen müssen, aber wenn ich tun, dass ich denke, ich werde einige vorhandene Befehle im Code vermasseln ...
Führen Sie Ihren Code obwohl und http://www.shellcheck.net/ wie es richtig Ihr Problem lösen :-) – andlrc
Beachten Sie auch, dass '$ (basename "$ 1")' mit '$ ersetzt werden {1 ## * /} ' – andlrc
@andlrc Danke, ich überprüfe diese Seite und benutze $ {1 ## * /} anstelle von Basisname! – Zuzzuc