我看到很多关于使用 id 检查用户是否存在于 *nix 系统中的例子
为了测试我的代码,我创建了一个简单的代码,并在检查并验证工作后,我将其复制到开发脚本中
检查用户信息
#!/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
答案1
PATH
在环境中,它特别的。脚本执行此操作后PATH=$5
,它不再能够找到id
可执行文件;因此这
id "$USER" >/dev/null 2>&1
默默地失败了。
您可能不想覆盖PATH
。您可能想要你的变量用小写字母表示。
但是如果你真的想要覆盖PATH
,那么您稍后应该使用不应依赖于新(“自定义”)的任何可执行文件的完整路径PATH
。例如/usr/bin/id
。