У меня есть 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
У меня действительно нет подсказки того, что продолжается.
Строка
if [ 2 > 1 ]; then
причины оболочка, чтобы попытаться открыть файл, названный 1
для записи. Считайте раздел REDIRECTION
в страница справочника удара для объяснения. Ваш user1
, по-видимому, позволяется записать в тот файл, и user2
не.
Вы, вероятно, думали об этом:
if [ 2 -gt 1 ]; then
, Который тестирует, больше ли 2, чем 1, который очевидно верен за исключением очень больших значений 1.
Следующие выражения используются с целыми числами:
Таблица 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
вместо >
в если выражение.