2 つの引数 (ファイル名と MD5hashval) を期待するスクリプトを取得しました。md5sum test.sh | を使用して、MD5sum の 16 進出力だけを抽出できます。grep -om1 '^[0-9a-f]*.' 何らかの理由で、同じコマンドをスクリプトから呼び出すと失敗します。Bashスクリプトに渡されたコマンドライン引数をチェックする最良の方法は何ですか? コードは次のようになります。
#!/bin/bash
while getopts ":f:s" opt; do
case $opt in
f)
FILENAME=`echo $OPTARG | sed 's/[-a-zA-Z0-9]*=//'`
echo ${FILENAME}
;;
s)
MD5SUM=`echo $OPTARG | grep -om1 '^[0-9a-f]*'`
echo $MD5SUM
;;
\?)
echo "Invalid option: -$OPTARG" >&2
exit 1
;;
:)
echo "Option -$OPTARG requires an argument." >&2
exit 1
;;
esac
done