为了说明我的问题,
TEST="Hi my name is John"
OUTP=`echo $TEST | awk '{print $3}'`
echo $OUTP
我期望这样做是将$ TEST变量传递给awk并将第三个字存储到$ OUTP中。
相反,我得到“嗨:没找到”,好像它期望输入是一个文件。但是,如果我只传递字符串而不是变量,则没有问题。什么是最好的方法来解决这个问题?
全部谢谢!
答案 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