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

Shell 使用剪切分隔符提取字符串的初始部分,shell,delimiter,cut,Shell,Delimiter,Cut,我有一个变量a,它的值的第一部分总是DEV-UI。A的各种可能值可以是:DEV-UI,DEV-UI2,DEV-UI* 我只想从中提取DEV,并将其存储在另一个变量中。这样,另一个变量B总是有值DEV 如何从A,DEV中提取并存储在B中 我正在寻找任何切割定界符或任何表达式,可以用来实现这一点在我的shell脚本 B=$(echo "$A" | cut -d'-' -f1) 将字符串拆分为-并返回第一部分。显而易见的步骤就是设置B=“DEV”,因为您声明它总是DEV。但是,下面我将展示如何将其提

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

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

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

我正在寻找任何切割定界符或任何表达式,可以用来实现这一点在我的shell脚本

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

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

显而易见的步骤就是设置
B=“DEV”
,因为您声明它总是
DEV
。但是,下面我将展示如何将其提取为第一个字段

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

$ B=${A%%-*}
下文对此进行了解释:

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

使用C Shell时,您的运气并不好:

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