-1

I want a linux cmd to write the value of a variable into a file. Heres what i have,

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" 

But i have to press Ctrl +D to end. I dont want to do it. Any alternatives.

4

2 回答 2

1

删除该cat > online_ace_stable-m4.5.conf行,您应该可以按 Ctrl+D。如果文件在您运行脚本之前可能已经存在,您还需要>>将最后一行的(附加)替换为>(覆盖)。

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

于 2013-03-07T10:05:09.357 回答
1

您在第 4 行的cat命令不正确。它缺少文件参数。如果没有此参数,则复制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"

因为它不需要先创建它并确保不保留旧内容。(注意 single>而不是 double >>

于 2013-03-07T10:06:23.777 回答