bash - 将 sudo 与 for 循环一起使用

标签 bash for-loop sudo

我想用 sudo 运行一个简单的 for 循环命令,但它不起作用:

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

我收到以下错误:

-bash: syntax error near unexpected token `do'

可能是我忽略的一个非常简单的事情。有帮助吗?

最佳答案

sudo 想要一个程序(+参数)作为参数,而不是一段 shell 脚本。不过,您可以这样做:

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

注意单引号。如果您使用双引号,您的 shell 会在 sudo(或者更确切地说,由它运行的 shell)看到它之前尝试扩展 $i

附言。正如评论中指出的(仅仅六年后),另一个问题是,如果您想遍历目录中的文件,正确的语法是 for i in/dir/*for 接受一个列表,而 /dir 是一个列表……只有一个项目。由于通配符扩展,/dir/* 扩展为 /dir 中的文件列表。

关于bash - 将 sudo 与 for 循环一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10889072/

相关文章:

bash - 处理除第一个参数之外的所有参数(在 bash 脚本中)

json - bash shell 脚本出现问题,尝试使用 cURL 发布变量 JSON 数据

bash - 远程sudo,执行命令并将输出写入本地终端

linux - 须藤:找不到命令

ubuntu - 云平台- sudo : unable to resolve host

bash - reg for . 中的双反斜杠和单斜杠有什么区别?

string - 将大字符串拆分为子字符串

php - 分离 PHP 页面,循环遍历 MySQL 表,并创建新的 Div

python - 评级标准化

java - "for x in list"在Java中怎么写?