Я использовал 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.