私は現在、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の場合、変数名を使用するたびに二重引用符で囲む必要があります。