Я использовал shebang #!
некоторое время, и сегодня наткнулся на случай использования, который меня смущает.
Существует несколько способов запуска scala script как
#!/usr/bin/env scala
println("hello world")
Однако я наткнулся на эту версию shebang
#!/bin/sh
exec scala "$0" "[email protected]"
!#
println("hello world")
Похоже, что это решение в основном вызывает bash во-первых, run exec scala "$0" "[email protected]"
, где $0
обозначает текущее имя файла, а [email protected]
- входные аргументы в позиционном массиве.
Мой вопрос в том, означает ли это, что все между #!
и !#
может быть выполнено в bash,
#!/bin/sh
exec scala "$0" "[email protected]"
echo "oh Yeah"
!#
println("hello world")
Это не ошибка, но я не дал мне "о да" в stdout, может ли кто-нибудь объяснить мне, что здесь происходит?
update: после реализации !#
является scala, я загрузил исходный код scala и понял, что он появляется только в комментарии ScriptRunner.scala, написанная Lex Spoon.