Gar*_*all 57 shell scripting bash shell-script
我正在编写一个 bash 脚本,如果用户不是 root,我想在其中退出。条件工作正常,但脚本不退出。
[[ `id -u` == 0 ]] || (echo "Must be root to run script"; exit)
Run Code Online (Sandbox Code Playgroud)
我试过使用&&
而不是,;
但都不起作用。
Mat*_*Mat 64
你可以这样做:
[[ $(id -u) -eq 0 ]] || { echo >&2 "Must be root to run script"; exit 1; }
Run Code Online (Sandbox Code Playgroud)
(在第一条语句中带有算术二元运算符的“普通”条件表达式),或:
(( $(id -u) == 0 )) || { echo >&2 "Must be root to run script"; exit 1; }
Run Code Online (Sandbox Code Playgroud)
(第一次测试的算术评估)。
请注意更改()
-> {}
- 大括号不会产生子外壳。(搜索man bash
“子外壳”。)
Mic*_*zek 23
这些命令周围的括号创建一个子shell。您的子shell 回显“必须是root 才能运行脚本”,然后您告诉子shell退出(尽管它已经退出了,因为没有更多命令)。修复它的最简单方法可能是使用一个if
:
if [[ `id -u` != 0 ]]; then
echo "Must be root to run script"
exit
fi
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
157599 次 |
最近记录: |