Почему тот же .sh не работает с 2 различными пользователями, выполняющими его?

У меня есть rwo пользователи User1 и User2.

У меня есть этот script1.sh в User2 домашняя папка:

#!/bin/bash

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

это называет script2.sh:

#!/bin/bash

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

Теперь, когда я выполняю script1 с помощью user1, все работает. Когда я выполняюсь с 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

У меня действительно нет подсказки того, что продолжается.

0
задан 19 August 2014 в 09:53

2 ответа

Строка

if [ 2 > 1 ]; then

причины оболочка, чтобы попытаться открыть файл, названный 1 для записи. Считайте раздел REDIRECTION в страница справочника удара для объяснения. Ваш user1, по-видимому, позволяется записать в тот файл, и user2 не.

Вы, вероятно, думали об этом:

if [ 2 -gt 1 ]; then

, Который тестирует, больше ли 2, чем 1, который очевидно верен за исключением очень больших значений 1.

5
ответ дан 7 October 2019 в 05:47

Следующие выражения используются с целыми числами:
Таблица 27-3 (от tlcl's книга PDF):

Integer Expressions:

Expression             Is True If...
integer1 -eq integer2 integer1 is equal to integer2.
integer1 -ne integer2 integer1 is not equal to integer2.
integer1 -le integer2 integer1 is less than or equal to integer2.
integer1 -lt integer2 integer1 is less than integer2.
integer1 -ge integer2 integer1 is greater than or equal to integer2.
integer1 -gt integer2 integer1 is greater than integer2.

Так, необходимо использовать -gt вместо > в если выражение.

0
ответ дан 7 October 2019 в 05:47

Другие вопросы по тегам:

Похожие вопросы: