sh脚本参数写法

 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 "处理完成"
使用 Hugo 构建
主题 StackJimmy 设计