我正在尝试运行一个简单的 for 循环来检查和显示几个硬盘驱动器的温度,如下所示:
for drive in a b c d e f g; do hddtemp "/dev/sd$drive"; done
如果我 su 到 root,这很有效,但如果可能,我希望能够在命令行上运行它或其他循环类型的单行命令,如果可能需要 sudo。
如果我尝试
sudo for drive in a b c d e f g; do hddtemp "/dev/sd$drive"; done;
我收到此错误:
bash:意外标记“do”附近的语法错误
如果我省略最后的;
(分号),则与上述相同的错误
将命令"
括在(双引号)中会得到以下结果:
sudo:用于 abcdefg 中的驱动器;做hddtemp / dev / sdg; 完成:找不到命令
将命令括在反引号 ( `
) 中
sudo "`for drive in a b c d e f g; do hddtemp "/dev/sd$drive"; done`"
为指定的每个驱动器号/规格实例给出错误:
/dev/sda: open: 权限被拒绝,后跟 sudo:: 命令未找到
是否可以将 for(或其他循环)命令作为命令行单行 sudo'ing 或以其他方式在 bash 中使用我的根凭据运行?
Ubuntu linux 16.04LTS/GNU bash 4.3.46(1)
不要放在循环sudo
之前for
。以下工作正常。
for drive in {a..g}; do sudo hddtemp "/dev/sd$drive"; done
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句