Bash部署脚本权限问题

时间:2011-01-29 03:08:05

标签: bash scripting deployment

我正在编写部署脚本并遇到了一个奇怪的问题...

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

但是...

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

...然后

ian@baster:~$ sudo ls -l /home/www/prod/www
total 28
-rw-r--r-- 1 root     root       31 2011-01-28 21:56 revision.html

ian@baster:~$ sudo more /home/www/prod/www/revision.html
Build:  - Deployed: 2011-01-28

这是什么交易?

2 个答案:

答案 0 :(得分:3)

通常的方法是使用tee

echo "foo" | sudo tee filename

您可以将输出抑制到tee这样的屏幕:

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

答案 1 :(得分:2)

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