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이므로 반환할 필요는 없습니다.

관련 정보