我有以下脚本来检查系统中是否存在给定用户名“alice”。
if id "alice" >/dev/null 2>&1; then
echo "user exists"
else
echo "user does not exist"
fi
我想检查alice,bob和carol是否存在。所以,当我在下面的代码中使用AND时,我确实得到了正确的结果,但它从id命令打印了不必要的行。
if id "alice" && id "bob" && id "carol" >/dev/null 2>&1; then
echo "user exists"
else
echo "user does not exist"
fi
输出如下:
uid=1001(alice) gid=1002(alice) groups=1005(somegroupname),1002(alice)
uid=1002(bob) gid=1003(bob) groups=1005(somegroupname),1003(bob)
user exists
我想确保如果alice,bob或carol不作为用户出现,我想打印一条有意义的消息,说明
<this_speicific_user> is not present.
答案 0 :(得分:2)
您可以使用大括号将所有3个命令分组到一个组中:
{ id "alice" && id "bob" && id "carol"; } >/dev/null 2>&1
答案 1 :(得分:0)
您可以重定向每个命令的stderr:
if id "alice" >/dev/null 2>&1 && id "bob" >/dev/null 2>&1 && id "carol" >/dev/null 2>&1;
then
echo "user exists"
else
echo "user does not exist"
fi
Oor使用复合命令:
if { id "alice" && id "bob" && id "carol"; } >/dev/null 2>&1; then
echo "user exists"
else
echo "user does not exist"
fi
答案 2 :(得分:0)
使用Uri
,就像使用private void wb_SourceUpdated(object sender, DataTransferEventArgs e)
{
WebBrowser wb = sender as WebBrowser;
textBlock.Text = wb.Source.AbsoluteUri;
}
private void wb_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
{
WebBrowser wb = sender as WebBrowser;
textBlock.Text = e.Uri.AbsoluteUri;
}
:
||
如果您的请求是要显示所有未设置的用户,则有点棘手,但使用否定检查:
&&
甚至:
{ test1 && test2 && test3 } || else_function
答案 3 :(得分:0)
我认为一般的答案是,如果你想要一个特定的错误,你需要一个特定的测试。也就是说,如果你测试(condA || condB || condC),那么找出哪些条件失败并不是直截了当的。
另外,如果你想全部测试它们,无论如何,你都需要将它们分解为单独的测试。否则,如果id "alice"
失败,其他人将因短路而无法接受测试。