这是我的 bash 脚本。
#!/bin/bash
oo="`cat /etc/httpd/conf/httpd.conf`";
cat > /a.txt << EOF
$oo
EOF
它只是读取 /etc/httpd/conf/httpd.conf 并将其写入 /a.txt,问题是当使用 sudo 命令通过 Web 脚本执行此操作时。由于某种原因,并非所有内容都写入 a.txt文件
但是当通过命令行执行时..一切都很好地写入a.txt
所以也许我应该通过添加以下内容将其发送到后台进程:
> /dev/null 2>&1
到它。但这怎么办呢?我试过
#!/bin/bash
oo="`cat /etc/httpd/conf/httpd.conf`";
cat > /a.txt << EOF
$oo
EOF > /dev/null 2>&1
这不起作用。
答案1
也许这个例子过于简单了,但我很难理解为什么你不直接运行:
cp /etc/httpd/conf/httpd.conf /a.txt
也就是说,已经有一个命令可以简单地从一个文件中读取并使用其内容创建另一个文件,它被称为cp
.唯一真正的区别是如果/a.txt
已经存在并且您试图保留其权限或类似的权限 - 但即使如此,您也只想这样做:
cat /etc/httpd/conf/httpd.conf >/a.txt
答案2
要在后台运行带有 HERE-DOC 的命令,请&
在第一行指定:
command << EOF &
blah blah
EOF
在这种特殊情况下,我不明白有什么意义。你已经将stdout重定向到a.txt,为什么还要同时将其重定向到/dev/null?
答案3
我认为你应该这样做:
cat </etc/httpd/conf/httpd.conf >/a.txt
尽我所能,我看不出您问题中的代码应该有任何其他效果。
当你:
cat <file
...或者...
cat <<FILE
$(shell generated file contents)
FILE
您只需将cat
的标准输入复制到其标准输出即可。所以在这种情况下:
<<FILE
`cat <file`
FILE
<<FILE
并且<file
是相同的。