同时使用这里的sh文件和管道

时间:2014-12-13 04:30:15

标签: sh heredoc

我在这里使用sh的文件来运行一些命令。现在我想用awk解析这些命令的输出。但是,每次执行它时,我都会得到命令的输出附加类似“%No such child process”

这就是我的脚本的样子。

#!/bin/sh
com = "sudo -u username /path/of/file -l"
$com <<EOF | awk '{print $0}'
Commands.
.
.
.
EOF

如何在不添加不需要的字符串的情况下使用heredoc和管道? 感谢

2 个答案:

答案 0 :(得分:0)

没问题,请检查:

$ cat <<EOF | awk '{print $1}'
a b c
1 2 3
EOF
a
1

答案 1 :(得分:0)

您的变量分配在某些方面是错误的。首先,你实际上并没有分配变量;您正在尝试运行名为com的命令,其参数为=,字符串为"sudo ..."。不得在=

的任何一侧使用空格
com="sudo ..."

其次,命令行不应存储在变量中; shell的解析器只能按照你想要的非常简单的命令来完成工作。完全输入命令,或使用shell函数。

com () {
    sudo -u username /path/to/file -l
}

com <<EOF | awk '{print $0}'
...
EOF