不要按Ctrl + D结束文件。任何选择

时间:2013-03-07 10:02:33

标签: linux shell

我希望linux cmd将变量的值写入文件。继承人我拥有的,

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才能结束。我不想这样做。任何替代方案。

2 个答案:

答案 0 :(得分:1)

删除cat > online_ace_stable-m4.5.conf行,按Ctrl + D就可以了。如果在运行脚本之前文件可能存在,则您希望在>>(覆盖)的最后一行上另外替换>(追加)。

如果您确实需要明确确保文件存在且为空,请使用echo -n > online_ace_stable-m4.5.conf

答案 1 :(得分:1)

第4行的cat command不正确。它缺少文件参数。如果没有此参数,则会将stdin复制到stdout。这种情况一直持续到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"

因为它不需要首先创建它并确保不保留旧内容。 (请注意单>而不是双>>