我看到很多关于使用 id 检查用户是否存在于 *nix 系统中的例子
为了测试我的代码,我创建了一个简单的代码,在检查和验证工作后,我复制了开发脚本
检查用户.sh
#!/usr/bin/env bash
function checkUser() {
if id "$USER" >/dev/null 2>&1; then
echo "user exists"
else
echo "user does not exist"
fi
}
USER=$4
checkUser
测试代码
sudo local/checkuser.sh misitio test 7.3 abkrim /home/abkrim/Sites/
abkrim.EXISTS
user exists
但是当我的脚本中的副本不起作用时
#!/usr/bin/env bash
if [ $EUID != 0 ]; then
sudo "$0" "$@"
exit $?
fi
SITE=$1
PHP=$3
USER=$4
NGINX=/etc/nginx/
FPM=/etc/php/${PHP}/fpm/pool.d/
PATH=$5
checkUser
测试代码
sudo local/deploy_site.sh misitio test 7.3 abkrim /home/abkrim/Sites/
abkrim
user does not exist
PATH
在环境中,它是特殊的。在你的脚本找到之后PATH=$5
,它就再也找不到id
可执行文件了;因此这个默默地失败了。
您可能不想覆盖
PATH
. 您可能需要小写的变量。但是,如果你真的想覆盖
PATH
,那么你应该稍后使用不应该依赖于新的(“自定义”)的任何可执行文件的完整路径PATH
。例如/usr/bin/id
。