2013-03-07 44 views
-1

我想要一個Linux cmd將變量的值寫入文件。繼承人我有什麼,不想按Ctrl + D結束文件。任何替代

x=$(cat /home/kate/Documents/Desktop/New-ACE-Deploy/deploy/ace/deploysetup/ConfFiles/online_ace_stable-m4.5.conf) 
echo $x 
cd /etc/apache2/sites-enabled 
cat > online_ace_stable-m4.5.conf 
echo "$x" >> "/etc/apache2/sites-enabled/online_ace_stable-m4.5.conf" 

但我必須按Ctrl + D結束。我不想這樣做。任何替代品。

回答

1

刪除cat > online_ace_stable-m4.5.conf行,你應該罰款關於按Ctrl + D。如果在運行該腳本之前該文件可能存在,則還需要用>(覆蓋)替換最後一行上的>>(附加)。

如果您確實需要明確確定文件是否存在且爲空,請使用echo -n > online_ace_stable-m4.5.conf

+0

該行正在創建我正在寫入的文件... – Linda 2013-03-07 10:06:07

+0

它將在您使用'>>'追加到它時創建,並且您不需要手動創建它。 – 2013-03-07 10:07:41

+1

非常感謝..我會接受你的回答。我被要求等待5分鐘.. – Linda 2013-03-07 10:08:36

1

您的cat command四號線不正確。它缺少一個文件參數。沒有這個參數是複製stdinstdout。這一直持續到stdin是封閉的,因此你需要使用CTRL - d

爲了解決您的問題,改變它的行:

cat online_ace_stable-m4.5.conf 

(注意>是走了)

如果你想創建一個空的(新)文件,請使用touch代替cat

touch online_ace_stable-m4.5.conf 

,或者直接回顯到文件:

echo "$x" > "/etc/apache2/sites-enabled/online_ace_stable-m4.5.conf" 

因爲它並不需要先創建它,並確保舊內容不被保存。 (注意,單個的>而不是雙重的>>

+0

我確實注意到>已經不存在了。但看起來這行本身並不需要創建一個文件。感謝'touch'cmd的額外infm。 – Linda 2013-03-07 10:19:41