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 中使用 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,因为它是默认值。

相关内容