这是一个简短的脚本,用于重命名我在 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 中使用 case $# ?我将值 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,因为它是默认值。