2011-01-29 65 views
1

我正在写一个部署脚本,并在一个奇怪的问题...运行击部署脚本权限问题

[email protected]:~$ sudo echo "Build: "$REVISION" - Deployed: "$(date +%Y-%m-%d) > /home/www/prod/www/revision.html 
-bash: /home/www/prod/www/revision.html: Permission denied 

但是......

[email protected]:~# echo "Build: "$REVISION" - Deployed: "$(date +%Y-%m-%d) > /home/www/prod/www/revision.html 
[email protected]:~# more /home/www/prod/www/revision.html 
Build: - Deployed: 2011-01-28 

然后...

[email protected]:~$ sudo ls -l /home/www/prod/www 
total 28 
-rw-r--r-- 1 root  root  31 2011-01-28 21:56 revision.html 

[email protected]:~$ sudo more /home/www/prod/www/revision.html 
Build: - Deployed: 2011-01-28 

这是怎么回事?

回答

2

echo以root身份运行,但不是重定向。在sudo子shell中运行重定向。

+0

我会怎样做呢? – Ian 2011-01-29 03:10:55

+1

`sudo bash -c“...”` – 2011-01-29 03:11:57

3

通常的方式做到这一点是tee

echo "foo" | sudo tee filename 

可以抑制输出到tee确实是这样的画面:

echo "foo" | sudo tee filename >/dev/null