我的脚本以:
开头#!/usr/bin/sudo bash
它执行非即时处理并且不打算中断,因此我想在输入密码后将-b选项添加到sudo以在后台中运行它。
#!/usr/bin/sudo -b bash
但是,脚本不接受该选项。难道我做错了什么 ?甚至可以通过这种方式选择吗?如果没有,为什么?
提前谢谢。
答案 0 :(得分:1)
让我们问shellcheck:
$ shellcheck yourscript
In yourscript line 1:
#!/usr/bin/sudo -b bash
^-- SC2096: On most OS, shebangs can only specify a single parameter.
一个公平的解决方法是让脚本根据标志使用sudo调用自身:
#!/bin/bash
if [[ $1 == "-n" ]]
then
echo "Processing as $(whoami)"
else
printf "Option -n not specified: invoking sudo -b %q -n:" "$0"
exec sudo -b "$0" -n
fi
这样做的另一个好处是可以直接运行yourscript -n
来不调用sudo而不是在后台运行。这允许像sudo yourscript -n && mail -s "Processing complete" you@example.com
这样的东西,如果脚本无条件地自我背景,这是不可能的。
警告:sudo "$0"
不是重新调用当前脚本的防弹方式。