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