4

如何在以下 bash 代码中拆分长 valueX 字符串?

case "$1" in
    value1|value2|value3|...........more values..................| valueN)
        some_processing "$@"
        ;;
    ...
esac

我正在寻找拆分成单独的行。像:

VAL+=value1
VAL+=value2
....
4

1 回答 1

11

从手册页:

case 命令首先扩展单词,然后尝试依次将其与每个模式匹配,使用与路径名扩展相同的匹配规则[.]

换句话说,它是一个 glob 模式,而不是一个正则表达式。因此,您可以在模式标记之间使用 IFS。例如:

case "$1" in
    value1 | \
    value2 )
        :
    ;;
esac

请注意,您必须使用反斜杠转义续行,这与管道符号将自动续行的通常情况不同。除此之外,您可以按照提示时的相同方式拆分线路。

于 2012-06-04T16:25:36.310 回答