나는 현재 bash 스크립팅 지식을 향상시키기 위해 일련의 연습을 하고 있습니다.
제가 하고 있는 연습은 다음과 같습니다. 파일을 암호화하는 encrypt.sh라는 스크립트를 작성하는 것입니다. 스크립트 요구 사항은 다음과 같습니다.
- 파일을 암호화하려면 openssl을 사용해야 합니다.
- 암호화할 파일 이름을 매개변수로 사용해야 합니다.
- 파일을 암호화할 때 이름은 동일하지만 ".enc"가 추가된 파일에 암호화된 버전을 넣어야 합니다.
- 다른 사용자와 함께 시스템에서 실행하는 것이 안전해야 합니다. 즉, 어떤 암호도 명령줄 인수로 전달할 수 없습니다.
- ENCRYPTION_KEY라는 환경 변수에서 사용할 비밀번호를 읽어야 합니다.
- 이 환경 변수가 설정되지 않은 경우 사용자에게 비밀번호를 묻는 메시지가 표시되고 해당 비밀번호를 사용해야 합니다.
- 인수가 제공되지 않으면 오류가 표시되고 종료 코드 2로 종료됩니다.
- 사용자가 --help 스위치를 사용하여 스크립트를 호출하면 메시지가 표시되어야 합니다.
- 이름에 공백이 있는 파일에 대해 작동합니다.
현재 스크립트가 이미 요구 사항 1-5,7-8을 충족하는 것 같습니다. 그런데 6번과 9번이 좀 헷갈리네요.
제가 현재 작업하고 있는 작업이나 누락된 요구 사항에 대한 솔루션에 대한 피드백을 주시면 매우 감사하겠습니다.
미리 감사드립니다.
usage="Usage: Enter the name of the file you would like to encrypt as a parameter, eg. $0 words"
ENCRYPTION_KEY="1234"
export ENCRYPTION_KEY
openssl enc -e -aes256 -in "$1" -out "$1".enc -pass env:ENCRYPTION_KEY
if [ "$1" == "-h" ] || [ "$1" == "--help" ]; then
echo $usage
fi
if test -z ${1}
then
echo "${0} :ERROR: No parameters provided. Please see -h or --help for usage." 1>&2
exit 1
fi
#DECODE (script is not required to decode, just here for testing purposes)
#openssl enc -d -aes256 -in words.enc -out words.enc.dec -pass env:ENCRYPTION_KEY
답변1
#6의 경우,이 read
내장 함수도움이 될거야. #9의 경우 변수 이름을 사용할 때마다 큰따옴표로 묶어야 합니다.