1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
#!/bin/bash
# 初始化变量,用于存储命令行选项的值
verbose=0 # 是否启用详细模式
output_file="" # 输出文件路径
input_file="" # 输入文件路径
# 显示帮助信息的函数
show_help() {
echo "用法: $0 [选项] [参数...]"
echo "选项:"
echo " -h, --help 显示此帮助信息"
echo " -v, --verbose 启用详细模式"
echo " -o, --output FILE 指定输出文件"
echo " -i, --input FILE 指定输入文件"
exit 0
}
# 使用getopts处理短选项
# :表示选项后面需要参数
# v: 表示v选项需要参数
# o: 表示o选项需要参数
# i: 表示i选项需要参数
# h 表示h选项不需要参数
while getopts ":hvo:i:" opt; do
case $opt in
h)
show_help # 显示帮助信息并退出
;;
v)
verbose=1 # 启用详细模式
;;
o)
output_file="$OPTARG" # 设置输出文件
;;
i)
input_file="$OPTARG" # 设置输入文件
;;
\?)
echo "无效的选项: -$OPTARG" >&2 # 处理未知选项
show_help
;;
:)
echo "选项 -$OPTARG 需要一个参数。" >&2 # 处理缺少参数的选项
show_help
;;
esac
done
# 移动参数指针,跳过已处理的选项
shift $((OPTIND-1))
# 检查是否有必需的参数
if [[ -z "$input_file" ]]; then
echo "错误: 必须指定输入文件 (-i)" >&2
show_help
fi
# 可选参数检查
if [[ -z "$output_file" ]]; then
output_file="output.txt" # 设置默认输出文件
fi
# 详细模式输出
if [[ $verbose -eq 1 ]]; then
echo "详细模式已启用"
echo "输入文件: $input_file"
echo "输出文件: $output_file"
echo "剩余参数: $*"
fi
# 主逻辑示例
echo "处理文件: $input_file"
echo "结果将保存到: $output_file"
# 这里可以添加实际的处理逻辑
# 例如: cat "$input_file" > "$output_file"
echo "处理完成"
|