
Schreiben Sie ein Shell-Skript file_locker.sh, um eine Datei zu komprimieren und diese mit einem gehashten Passwort aus einer zufällig generierten PIN einer bestimmten Länge zu schützen, während die PIN in einer bestimmten Datei gespeichert wird.
#!/bin/bash
file_locker(){
m=$1
for ((i=1;i<=m;i++));
do
num=($(( 0 + RANDOM % 9 )))
echo -n "$num"
done > $3
mypin=$(echo $3)
echo pin $mypin
myhash=$(echo $mypin | sha256sum)
echo hash $myhash
zip -P $myhash $2.zip -r $2 && rm $2
}
file_locker $1 $2 $3
Die Befehlszeile sagt mir jedoch Folgendes:
zip error: Invalid command arguments (cannot write zip file to terminal)
Ich weiß nicht, wie ich den Zip-Befehl verbessern kann. Bitte helfen Sie!
Antwort1
Sie sollten Anführungszeichen in Argumenten verwenden ...
und $m anstelle von m in einer For-Schleife verwenden
#!/bin/bash
file_locker(){
m="$1"
for ((i=1;i<=$m;i++));
do
num=($(( 0 + RANDOM % 9 )))
echo -n "$num"
done > "$3"
mypin=$(echo "$3")
echo pin "$mypin"
myhash=$(echo "$mypin" | sha256sum)
echo hash "$myhash"
zip -P "$myhash" "$2".zip -r "$2" && rm "$2"
}
file_locker "$1" "$2" "$3"
ZIP-Fehler: Ungültige Befehlsargumente ..
Sie erhalten dies, wenn Ihr Argument Leerzeichen enthält …