BASH将带有变量的命令输出存储到另一个变量中

时间:2018-10-04 11:21:19

标签: linux bash

我正在尝试将以下命令的输出存储到新变量中,到目前为止没有任何运气:

lineNumber="$(perl -ne '{$n=$. if /$inpuTtext/} END {print '$n\n'}')"

其中$ inpuTtext来自上一行,该行读取用户的输入。

read inputText

任何帮助将不胜感激,

谢谢。

2 个答案:

答案 0 :(得分:0)

单引号字符串可以与双引号连接在一起,以允许扩展inputText

lineNumber="$(perl -ne '{$n=$. if /'"$inputText"'/} END {print "$n\n"}')"

$n\n周围的单引号也关闭了perl命令(未嵌套)。

请注意,inputText是按原样注入perl命令中的,因此,例如,如果inputText可以包含/,则必须将其用作分隔符进行转义。

否则inputText可以与环境一起传递:

lineNumber="$(inputText=$inputText perl -ne '{$n=$. if /$ENV{inputText}/} END {print "$n\n"}')" 

答案 1 :(得分:0)

尝试一下。在这里,我将标准错误重定向到标准输出,并且也删除了"":-

lineNumber=$(perl -ne '{$n=$. if /$inpuTtext/} END {print '$n\n'}') 2>&1