这是我的脚本:
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 并且什么也没找到。所以,您需要回显行变量,而不是像命令一样运行它。