쉘 스크립트의 zip 문제. 왜 잘못된 걸까요?

쉘 스크립트의 zip 문제. 왜 잘못된 걸까요?

파일을 압축하고, 무작위로 생성된 지정된 길이의 PIN의 비밀번호 해시로 파일을 보호하고, PIN을 지정된 파일에 저장하는 쉘 스크립트 file_locker.sh를 작성하십시오.

#!/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 오류: 잘못된 명령 인수..

인수에 공백이 있으면 다음과 같은 결과가 나타납니다.

관련 정보