同时使用此处文档和SH的管道

  • 本文关键字:SH 管道 文档 sh heredoc
  • 更新时间 :
  • 英文 :


我在这里使用 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

相关内容

  • 没有找到相关文章

最新更新