我正在尝试通过bash脚本设置假日期 我正在使用以下命令:
#!/bin/bash
echo 'myPass' | sudo -s 'date -s "1 NOV 2011 09:00:00"'
但是我收到命令错误。 什么是正确的方法?
答案 0 :(得分:2)
sudo
默认情况下不会从标准输入读取密码,而是从终端本身读取密码,因此您无法以这种方式将密码管道传输到sudo
。您需要使用-S
选项从标准输入中读取。
echo "myPass" | sudo -S date -s "1 NOV 2011 09:00:00"
(请注意,您不需要使用-s
(小写)选项; sudo
可以直接运行date
而无需启动插入的shell。)
但是,暴露您的密码会带来安全风险。最好配置sudo
以允许您(或任何打算运行此脚本的人)运行
这个特殊的date
命令没有密码。
答案 1 :(得分:-2)
对于sudo,没有破折号的第一个参数是要执行的命令,以下参数是赋予该命令的参数。如果将命令及其参数用引号括起来(例如"echo foo"
),则sudo尝试执行命令“echo foo”而不是命令“echo”,参数“foo”。因此,您需要省略最外面的引号:
sudo date -s "1 NOV 2011 09:00:00"