我想使用systemctl hibernate
和root权限编写一个休眠计时器功能。
这是我的功能:
hibernate-timer() {
sudo bash -c 'echo "System is going to hibernate in $1 minute(s)..."
sleep $1m
systemctl hibernate'
}
当运行hibernate-timer 50
时,我希望系统在50分钟后休眠。但是,我收到以下错误消息:sleep: invalid time interval ‘m’
。
有谁能告诉我如何使用root权限编写休眠计时器?
答案 0 :(得分:1)
您忘记在单引号后将参数传递给bash -c
:
hibernate-timer() {
sudo bash -c 'echo "System is going to hibernate in $1 minute(s)..."
sleep $1m
systemctl hibernate' -- $1
}
请注意我在最后添加的-- $1
。如果没有这个,bash -c
中的命令没有获取任何命令行参数,因此命令中$1
的值为空,因此命令变为sleep 50m
而不是sleep m
哪个不行。
从手册页:
-- A -- signals the end of options and disables further option
processing. Any arguments after the -- are treated as file‐
names and arguments.
这就是-- $1
作为bash -c '...'