2013-07-24 3 views
1

При запуске командыLinux сообщение об ошибке: разрешение отказано после предоставления всех разрешений

./load_test_triples.sh TMODEL/Map.ttl TMODEL Y >> load_semantic.log

Я получаю следующее сообщение:

./load_test_triples.sh: line 72: =: Permission denied 

не нравится что-то в моем сценарии, потому что, если я выберу код, начинающийся со строки 54 и после, он работает просто отлично:

12 MODEL=$2 
13 REPLACE=$3 
. 
. 
54 get_count() { 
55  sqlplus -s user/pass <<! 
56  set heading off 
57  set feedback off 
58  set pages 0 
59  select PRNCT_CHANGE 
60  FROM COUNT_STATISTICS 
61  WHERE model = '$MODEL' 
62  AND NEW_DATE = (SELECT MAX(NEW_DATE) 
63      FROM COUNT_STATISTICS 
64      WHERE MODEL = '$MODEL'); 
65 ! 
66 } 
67 
68 count=$(get_count $1) 
69 
70 echo $count #echoes right number 
71 
72 if [ $count >= 0 ]; then 
73  echo "is greater than or equal zero" 
74 else 
75  echo "is less to zero" 
76 fi 

Кто-нибудь знает, что может быть проблемой?

+0

Проблема заключается в том, что вы пытаетесь сделать в сценарии оболочки, что должно быть правильно сделано в реальном языке программирования , Сценарий оболочки опасен; легко создать впечатление, что это мощный и выразительный язык, а затем вы начинаете пытаться что-либо сделать в нем, а следующее, что вы знаете, вы грызете свою ногу на колене. –

ответ

3

В команде test>= интерпретируется как выходное перенаправление в файл с именем =. Там нет >= оператора в оболочке, но вы хотите использовать оператор -ge для целого Comparision все равно:

if [ "${count:-0}" -ge 0 ]; then 
+0

, если я перехожу к тому, что получаю: ./load_test_triples.sh: строка 72: [: -ge: унарный оператор ожидается – Angelina

+0

, если я добавлю двойные кавычки вокруг числа переменных, я получаю: ./load_test_triples.sh: строка 72: [:: ожидаемое целочисленное выражение – Angelina

+0

Похоже, что 'count' установлен в пустую строку. Было бы неплохо исправить 'get_count', но я могу обеспечить обход. Мой ответ предполагает, что пустую строку следует рассматривать как 0. – chepner

Смежные вопросы