从变量值中提取子字符串

从变量值中提取子字符串

我有一个字符串,其形式segment_78787存储$ID在我的 shell 脚本中调用的变量中。我需要获取第二部分“78787”并将其分配给另一个变量。

我尝试过像

batchname=`ID|cut -d_ -f1`

它没有给我任何结果。

答案1

如果您的 shell 支持它(所有类似 POSIX 的 shell 都会这样做),您可以使用扩展

batchname=${ID##*_}

甚至

batchname=${ID#*_}

第一种形式删除最右边的下划线之前的所有字符(包括最右边的下划线),第二种形式删除最左边的下划线之前的所有字符(包括最左边的下划线)。在您的特定示例中,两种形式是等效的。

答案2

它应该是

batchname=`echo $ID | cut -d_ -f2`

相关内容