我正在編寫一個shell腳本,並希望將STDOUT管道傳輸到su命令中的文件中。輸出的文件需要由另一個用戶擁有,因此使用su。但是,當要輸出的文本和輸出文件的名稱是變量(請參見下面的示例)時,我無法使用管道工作。su和具有變量的管道
我的解決方法是管到一個文件,而無需使用蘇,然後CHOWN該文件到我需要的用戶。但是,我想知道是否有一個使用su執行此操作的「單步」方法?
示例(僅供說明之用):
#!/bin/sh
message="Hello World";
file="/tmp/HelloWorld.txt";
su someuser -c 'echo "${message}" > "${file}"';
如果我把${file}
在雙引號,因爲在這個例子中,我得到以下錯誤:
bash: : No such file or directory
如果我刪除雙 - 引用約爲${file}
,出現以下錯誤:
bash: ${file}: ambiguous redirect
輝煌 - 它的作品!這麼快的回覆,非常感謝! – Francis 2011-12-29 10:03:46
你「重定向」到一個文件,「管道」到一個進程。常規文件不是管道。 – 2011-12-29 14:36:13