将 bash 变量通过管道传输到 awk 并存储输出

发布于 2024-08-26 05:29:44 字数 267 浏览 2 评论 0原文

为了说明我的问题,

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

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

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

谢谢大家!

To illustrate my problem,

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

What I would expect this to do is pass the $TEST variable into awk and store the 3rd word into $OUTP.

Instead I get "Hi: not found", as if it is expecting the input to be a file. If I pass just a string instead of a variable, however, there is no problem. What would be the best way to approach this?

Thanks all!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

司马昭之心 2024-09-02 05:29:44
#!/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
#!/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
沫离伤花 2024-09-02 05:29:44

一行:

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

In one line :

echo $(echo "Hi my name is John" | awk '{print $3}')
萌无敌 2024-09-02 05:29:44

您的代码按原样对我有用。

[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

Your code works for me, as-is.

[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
故事和酒 2024-09-02 05:29:44

与其他人一样,这对我来说是有效的,但也许在第 2 行中的 $TEST 周围添加双引号 (") 会有所帮助。如果没有,请提供更具体的信息有关您正在运行 bash 的系统的信息可能会有所帮助。

As with others, this works for me as-is, but perhaps adding double-quotes (") around $TEST in line 2 would help. If not, more specific information about the system on which you are running bash might help.

请持续率性 2024-09-02 05:29:44

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

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

One way to reproduce similar behavior:

$ alias echo='echo;'
$ echo Hi
Hi: command not found
$ alias
alias echo='echo;'
$ unalias echo
$ echo Hi
Hi
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文