Bashスクリプトでこの変数の意味は何ですか?

Bashスクリプトでこの変数の意味は何ですか?

以下は、tldpで見つかったファイルの拡張子を置き換える短いスクリプトです。

#!/bin/bash
Mysterious=65
case $# in
 0|1)
 echo "Usage: `basename $0` old_file_extension new_file_extension"
 exit $Mysterious
 ;;
esac

for filename in *.$1
do
 mv $filename ${filename%$1}$2
done
exit 0

ミステリー変数の値がわかりません。スクリプトの所有者が65を選択した理由は何ですか?0または1で$#ケースを使用する理由は何ですか?値を65から100に変更しましたが、まだ機能します。

ベストアンサー1

スクリプトを書いた人は、終了ステータスがセキュリティの問題を示す可能性があると誤って信じていたようです。名前parmErrorやそのような名前を付けるともっと意味があるでしょう。

スペースや特殊文字もサポートするより良いアプローチは次のとおりです。

#!/bin/bash

if test "$#" -ne 2
then
        echo "Usage: $0 old_file_extension new_file_extension"
        exit 2
fi

for filename in *."$1"
do
        mv "$filename" "${filename%$1}$2"
done

デフォルト値は0なので、返す必要はありません。

おすすめ記事