2012-06-04 49 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超时不够大,它会一直要求输入密码:( –