使用剪切分隔符提取字符串的初始部分



我有一个变量A,它有一个值,其第一部分总是DEV-UI。A的各种可能值可以是:DEV-UIDEV-UI2DEV-UI*

我想从中提取DEV并将其存储在另一个变量中。这样,另一个变量B始终具有值DEV

如何从A中提取并存储在 B 中DEV

我正在寻找任何切割分隔符或任何可用于在我的 shell 脚本中实现此目的的表达式。

B=$(echo "$A" | cut -d'-' -f1)

-拆分字符串并返回第一部分。

明显的步骤显然只是设置B="DEV",因为您声明它始终DEV。但是,下面我展示了如何将其提取为第一个字段。

这有点取决于您拥有的外壳类型,但如果它是任何形式的sh兼容外壳,您可以执行以下操作:

$ B=${A%%-*}

这在 POSIX shell 命令语言中进行了解释:

${parameter%%[word]}删除最大的后缀模式。该词应扩展以产生模式。然后,参数扩展应生成参数,删除与模式匹配的后缀的最大部分。

$ A="hello-big-world"
$ echo ${A%-*}
hello-big
$ echo ${A%%-*}
hello

使用 C Shell 时,您就没有那么幸运了:

% set a = "hello-big-world"
% set b = `echo $a | cut -d- -f1`
% echo $b
hello