我在这里使用 sh 的文档来运行一些命令。 现在我想使用 awk 解析这些命令的输出。但是,每次我执行它时,我都会得到命令的输出,并附加如下内容"% 没有这样的子进程"
这就是我的脚本的样子。
#!/bin/sh
com = "sudo -u username /path/of/file -l"
$com <<EOF | awk '{print $0}'
Commands.
.
.
.
EOF
我将如何使用 heredoc 和管道而不附加不需要的字符串?谢谢
你的变量赋值在几个方面是错误的。首先,您实际上并没有分配变量;您正在尝试运行名为 com
的命令,其参数=
,字符串"sudo ..."
。不得在=
的两侧使用空格:
com="sudo ..."
其次,命令行不应该存储在变量中;shell的解析器只能按照非常简单的命令的方式工作。完整键入命令,或使用 shell 函数。
com () {
sudo -u username /path/to/file -l
}
com <<EOF | awk '{print $0}'
...
EOF
没问题,请检查:
$ cat <<EOF | awk '{print $1}'
a b c
1 2 3
EOF
a
1