【发布时间】:2019-04-12 10:08:54
【问题描述】:
Bash 脚本错误用户在退出时退出根目录
我有一个大的 Bash 脚本,如果某些用户输入无效,它需要退出脚本并重新启动它。我遇到了一个奇怪的错误,如果用户确实在脚本所在目录之外执行了脚本,他就会从 root 中注销。但是如果脚本是在脚本所在目录中执行的,则不会出现这种情况。
我已经尝试移除出口,但这只会让事情变得更糟。
#!/bin/bash
some_function() {
read -p "Enter something: "
# Some commands
if [[ $? -gt 0 ]]; then
echo "error"
. /whatever/location/script.sh && exit 1
fi
}
预期的结果是,脚本只是重新启动并退出用户运行的进程。实际结果是这样的,但如果脚本在此之后终止,用户将退出 root。
【问题讨论】:
-
顺便说一句,检查
$?的零/非零值是错误的形式,因为任何设置$?的命令都可能直接是if的主体。代替something; if [ $? -eq 0 ],使用if something; then,或者反过来使用if ! something; then。