linux bash sed-command with variable

use*_*607 0 linux bash shell sed

我在linux bash".sh"脚本中有一个变量

$data="test_1"
Run Code Online (Sandbox Code Playgroud)

现在我想创建一个新变量($ name),它只包含下划线之前的$ data部分,所以

$name="test"
Run Code Online (Sandbox Code Playgroud)

我想用sed这样做

name=$(echo "$dataset" | sed 's/_.*//');
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用.我究竟做错了什么?

rit*_*t93 5

无需调用外部进程(sed).相反,您可以使用shell的参数替换,如下所示:

$ data="test_1"

$ echo "${data%%_*}"
test
Run Code Online (Sandbox Code Playgroud)

${var%%Pattern}$varPattern的最长部分移除,该部分与后端(从右侧)匹配$var.

${var%Pattern} 用于去除最短的图案

有关参数替换的更多信息,请点击此处.

您可以将其存储在如下变量中:

$ name="${data%%_*}"

$ echo "$name"
test
Run Code Online (Sandbox Code Playgroud)