变量中 | grep 的结果

变量中 | grep 的结果

这是我的脚本:

    var=  $( $line | grep -Po '.*(?=.fr)' )
    echo $var

我遇到错误,仅显示:

 command not found

你知道什么地方出了问题吗?

答案1

将命令的输出通过管道传输到变量..

一个简单的例子,有点像你的

$ a=$(echo abc | grep -o a)

$ echo $a
a

所以你的情况

$ line=asdf.fr

$ a=$(echo $line | grep -Po '.*(?=.fr)')

$ echo $a
asdf

$

您的行失败了,因为它扩展了行变量 $line,并执行了它,这会将错误写入 stderr 而不会将任何内容写入 stdout。所有具有不同含义的 $ 看起来有点奇怪。但如果您这样做了(在 $ 提示符下),$$line<ENTER>那么您会得到未找到命令。如果您$$line>a cat a这样做了,那么您在那里什么也看不到。所以它没有将任何东西传送到 grep 并且什么也没找到。所以,您需要回显行变量,而不是像命令一样运行它。

相关内容