Аргументы, которые вы предоставляете bashscript, будут отображаться в переменных $1
и $2
и $3
, где число ссылается на аргумент. $0
- это сама команда.
Аргументы разделены пробелами, поэтому, если вы предоставите команды -from
и -to
в команде, они тоже попадут в эти переменные, поэтому для это:
./ocrscript.sh -from /home/kristoffer/test.png -to /home/kristoffer/test.txt
Вы получите:
$0 # ocrscript.sh
$1 # -from
$2 # /home/kristoffer/test.png
$3 # -to
$4 # /home/kristoffer/test.txt
Может быть проще опустить -from
и -to
, например:
ocrscript.sh /home/kristoffer/test.png /home/kristoffer/test.txt
Тогда у вас будет:
$1 # /home/kristoffer/test.png
$2 # /home/kristoffer/test.txt
Недостатком является то, что вам нужно будет поставить его в правильном порядке. Существуют библиотеки, которые упрощают анализ именованных аргументов в командной строке, но обычно для простых сценариев оболочки вы должны просто использовать простой способ, если это не проблема.
Тогда вы можете сделать:
/usr/local/bin/abbyyocr9 -rl Swedish -if "$1" -of "$2" 2>&1
Двойные кавычки вокруг $1
и $2
не всегда необходимы, но рекомендуются, потому что некоторые строки не будут работать, если вы не ставите их между двойными кавычками.
Вы вызываете метод с именем restBuilder()
, и этот метод не существует. Если вы хотите, чтобы это работало, вам нужно реализовать этот метод и заставить его возвращать что-то, что может иметь дело с вызовом post(String, Closure)
.
Вы, вероятно, намереваетесь использовать класс RestBuilder
. Подробности будут зависеть от того, какую версию Grails вы используете, но вы, вероятно, захотите, что-то вроде этого ...
RestBuilder restBuilder = new RestBuilder()
restBuilder.post('http://localhost:2222/api/microservice/fetchData'){
header 'authorization', 'fdgtertddfgfdgfffffff'
accept 'application/json'
json {
empId = 1
name = 'test1'
}
}
Вам может понадобиться добавить зависимость от grails-datastore-rest-client
в ваш build.gradle
.
compile "org.grails:grails-datastore-rest-client"
Надеюсь, это поможет.