Ответ 1
Этот #!/usr/bin/env groovy
будет искать ваш путь в поисках groovy для выполнения script
Можно ли объявить в начале файла, что он должен быть выполнен как Groovy script?
Примеры для других языков сценариев:
#!/bin/sh
#!/usr/bin/python
#!/usr/bin/perl
Этот #!/usr/bin/env groovy
будет искать ваш путь в поисках groovy для выполнения script
В соответствии с this вы можете использовать #!/usr/bin/groovy
(если это его местоположение). Поисковый запрос, который вы ищете, это shebang
(это то, что называется первой строкой).
Общим трюком является запись script, имеющая смысл на нескольких языках, также известный как "полиглот" script.
В случае Bash и Groovy это особенно удобно:
#!/bin/sh
//bin/true; exec groovy -cp .. "$0"
println "Hello from Groovy"
#!
), которая сообщает ОС, чтобы запустить script как обычную оболочку script./bin/true
(no-op); затем находит исполняемый файл groovy в PATH и запускает его непосредственно в файле script ("$0"
) плюс дополнительные аргументы, заменяя текущий процесс оболочки (exec
)//
) и будет запускать оставшуюся часть script.Если вам нужна более сложная часть оболочки, возможно, для настройки переменных среды или обнаружения, где установлен groovy, вы можете использовать другой трюк:
#!/bin/sh
'''':
echo Hello from Shell
exec groovy -cp .. "$0"
'''
println "Hello from Groovy"
'''':
как две пустые строки ''
, за которыми следует двоеточие, которое не является оператором.exec
или exit
"$0"
)'''':
как начало длинной строки '''
, тем самым пропустив все команды оболочки, а затем запустим оставшуюся часть script.