如何分叉“cat”指令?

如何分叉“cat”指令?

這是我的 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是相同的。

相關內容