shell腳本中的zip問題。為什麼是錯誤的呢?

shell腳本中的zip問題。為什麼是錯誤的呢?

編寫 shell 腳本 file_locker.sh 來壓縮文件,並使用指定長度的隨機產生 PIN 的雜湊密碼來保護該文件,同時將 PIN 儲存到指定文件中。

#!/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 error: Invalid command arguments (cannot write zip file to terminal)

我不知道如何改進 zip 命令。請幫忙 !

答案1

你應該在參數中使用引號...
並在 for 迴圈中使用 $m 而不是 m

#!/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 錯誤:指令參數無效..

如果你的論點中有空格,你會得到這個......

相關內容