Bash运行docker命令只有当用户有权限(Bash if或者语句)

我试图只允许脚本运行,如果用户被允许docker特权。 所以这意味着用户或者需要在docker组中或者是root用户。

我试图做到这一点,但它不工作。

 if [ $EUID -ne 0 ] || [ $(groups | grep -c docker) -ne 1 ]; then echo "You must have docker privileges to use this command." exit 1 fi echo "Do docker stuff" 

奇怪的是,只有[ $EUID -ne 0 ][ $(groups | grep -c docker) -ne 1 ]可以自行工作,但OR条件似乎不起作用,我不知道为什么。

你应该把它们与&& ,而不是||结合起来 。

假设用户在泊坞窗组,但不是根。 [ $EUID -ne 0 ]将为true,而[ $(groups | grep -c docker) -ne 1 ]将为false。 || 如果它的任何一个操作数是真的,那么这是真的,所以这将使整个条件成立,并且打印出错信息。

&&只有在两个操作数都为true的情况下才会成功,所以当用户不是root用户时他们不在泊坞窗组中。