我如何使用一组指令的输出来创建一个新变量?

时间:2017-09-22 16:15:58

标签: linux bash variables unix cut

所以基本上我有一个变量,让我们考虑这个变量v

v=overflow_12

现在我正在cut -d执行_分隔命令以分割溢出,其中12个已完成:

echo $v | cut -d '_' -f 2

给出了答案12.然而,如何将12存储在变量中并最终将其增加1以使其成为13?

我试过了:

i= echo $v | cut -d '_' -f 2

应该将12存储到$i?然而当我接着:

echo $i

这只是一个空白的答案?我必须最终将此变量增加1,但我不知道为什么12不存储在$i中?

4 个答案:

答案 0 :(得分:0)

使用$(command)以字符串形式捕获命令的输出。

i=$(echo $v | cut -d '_' -f 2)

或者,您可以直接在bash中删除前缀。

i=${v#*_}

#删除字符串前缀,*_匹配任何后跟下划线的内容。

答案 1 :(得分:0)

您只是使用错误的语法进行变量赋值。您不能使用|来管道变量,而=之后也不能有空格。这有效:

v=overflow_12
i=$(echo $v | cut -d '_' -f 2)
echo $i

答案 2 :(得分:0)

使用i = $(命令)将i设置为命令结果。

答案 3 :(得分:0)

待办事项

i=$(echo $v | cut -d '_' -f 2)

适用于大多数bash版本,除了非常旧版本。对于古老的bash版本

i=`echo $v | cut -d '_' -f 2`

我建议使用&#34; here string&#34;语法<<<而不是echo

i=$(cut -d '_' -f 2 <<< $v)