root用户检查脚本执行无任何反应,如何排查原因?
问题分析与解决
脚本逻辑说明
你的脚本逻辑本身是正确的:
#!/bin/sh [ "$(id -u)" = 0 ] || exit 1 echo "Running"
当非root用户执行时,$(id -u)返回的不是0,会触发|| exit 1,脚本直接以状态码1退出,不会执行后续的echo "Running"。
为什么看起来“无任何反应”
因为脚本退出时没有输出任何提示信息,只是默默终止。你可以通过执行脚本后查看退出状态码来确认:
./your_script.sh echo $?
如果输出是1,说明脚本确实按预期以exit 1退出了。
优化方案(可选)
如果需要让用户明确知道是因为非root身份导致脚本退出,可以在exit前添加提示:
#!/bin/sh if [ "$(id -u)" != 0 ]; then echo "错误:必须以root用户身份执行此脚本" >&2 exit 1 fi echo "Running"
这里将错误信息输出到标准错误流(>&2),符合脚本输出规范,用户能直观看到失败原因。
内容的提问来源于stack exchange,提问作者9064505
相关产品推荐
相关产品推荐

