2012-06-04 48 views
11

我想運行一個簡單的使用sudo命令循環,但它不工作:使用sudo與循環

sudo -i -u user for i in /dir; do echo $i; done 

我得到以下錯誤:

-bash: syntax error near unexpected token `do' 

可能是一個非常簡單的事情,我俯瞰。任何幫助?

回答

21

sudo想要一個程序(+參數)作爲參數,而不是一段shell腳本。但您可以這樣做:

sudo -i -u user sh -c 'for i in /dir; do echo $i; done' 

請注意單引號。如果你使用雙引號,你的shell會在sudo(或者說它運行的shell)看到它之前嘗試擴展$i

+0

你明白了!祝你們好運。 – shellter

+0

這樣做,謝謝! – Axl

+0

據此,每個輸出文件將被寫入/保存在指定用戶的主目錄中。如果我想要將輸出寫入特定的輸出,該怎麼辦? –

3

您可以嘗試sudo的慶典-c'命令,這裏的

1

把須藤內循環:

for i in /dir; do 
    sudo -u user somecommand $i 
done 

如果需要其他用戶的權限來產生這不會沒有額外的步驟工作例如,循環的glob。

+0

這個問題是,如果sudo超時不夠大,它會一直要求輸入密碼:( –