将bash变量管道化为awk并存储输出

时间:2010-03-22 03:17:16

标签: bash awk

为了说明我的问题,

TEST="Hi my name is John"
OUTP=`echo $TEST | awk '{print $3}'`
echo $OUTP

我期望这样做是将$ TEST变量传递给awk并将第三个字存储到$ OUTP中。

相反,我得到“嗨:没找到”,好像它期望输入是一个文件。但是,如果我只传递字符串而不是变量,则没有问题。什么是最好的方法来解决这个问题?

全部谢谢!

5 个答案:

答案 0 :(得分:20)

#!/bin/bash
TEST="Hi my name is John"
set -- $TEST
echo $3

#!/bin/bash
TEST="Hi my name is John"
var=$(echo $TEST|awk '{print $3}')
echo $var

答案 1 :(得分:4)

在一行中:

echo $(echo "Hi my name is John" | awk '{print $3}')

答案 2 :(得分:3)

您的代码原样适用于我。

[bloom@little-cat-a ~]$ TEST="Hi my name is John"
[bloom@little-cat-a ~]$ OUTP=`echo $TEST | awk '{print $3}'`
[bloom@little-cat-a ~]$ echo $OUTP
name

答案 3 :(得分:1)

和其他人一样,这对我来说很有用,但是在第2行的"附近添加双引号($TEST)会有所帮助。如果没有,有关运行bash的系统的更多具体信息可能有所帮助。

答案 4 :(得分:0)

重现类似行为的一种方法:

$ alias echo='echo;'
$ echo Hi
Hi: command not found
$ alias
alias echo='echo;'
$ unalias echo
$ echo Hi
Hi