這是我的 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 腳本執行此操作時。 .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
是相同的。