为什么同一个 .sh 由两个不同的用户执行时无法运行?

为什么同一个 .sh 由两个不同的用户执行时无法运行?

我有两个用户:User1 和 User2。

我在 User2 主文件夹中有这个 script1.sh:

#!/bin/bash

cd /home/user1 && ./script2.sh

调用script2.sh:

#!/bin/bash

if [ 2 > 1 ]; then
echo TRUE!.
else
echo NOT TRUE!
fi

现在,当我使用 user1 执行 script1 时,一切正常。当我使用 user2 执行时,出现此错误:

./script2.sh: line 3: 1: Permission denied

说我不能……如果?如果我在终端上写下所有内容,它也会起作用。所以我的权限:

-rwxrwxr-x 1 user2 group_with_both_users 149 Ago 19 02:41 script2.sh
-rwxr-xr-x 1 user2 group_with_both_users 60 Ago 19 01:38 script1.sh

我真的不知道发生了什么事。

答案1

线路

if [ 2 > 1 ]; then

导致 shell 尝试打开名为1write 的文件。请REDIRECTION阅读bash 手册页解释一下。你user1显然有权写入该文件,但user2实际上却不行。

你很可能想到了这一点:

if [ 2 -gt 1 ]; then

测试 2 是否大于 1,除了 1 的非常大的值外,这显然是正确的。

答案2

以下表达式与整数一起使用:
表 27-3(来自tlcl 的pdf 书):

整数表达式:

如果...则表达式为真
整数1 -eq 整数2 整数1 等于整数2。
整数1 -ne整数2 整数1不等于整数2。
整数1 -le 整数2 整数1 小于或等于整数2。
整数1 -lt 整数2 整数1小于整数2。
整数1 -ge整数2 整数1大于或等于整数2。
整数1 -gt 整数2 整数1 大于整数2。

因此,你必须使用-gt>不是if 表达式

相关内容