Есть ли для удара что-то как жемчуг __DATA__
? Я имею в виду функцию, что код после __DATA__
не будет выполняться.
Сценарии оболочки анализируются построчно по мере их выполнения, поэтому вам просто нужно убедиться, что выполнение никогда не достигнет данных, которые вы хотите защитить. Вы можете сделать это, например:
# Some shell code...
exit
[data (possibly binary) goes here]
Чтобы на самом деле прочитать эти данные из вашего скрипта, вы можете использовать некоторую магию sed, чтобы извлечь все после первой строки, содержащей только __ DATA __
, затем сохранить вывод этого sed в переменной. Вот пример:
#!/bin/sh
data=$(sed '0,/^__DATA__$/d' "$0")
printf '%s\n' "$data"
exit
__DATA__
FOO BAR BAZ
LLAMA DUCK COW
Если вы сохраните этот сценарий как test-data.sh
и сделаете его исполняемым, вы можете запустить его и получить следующий результат:
$ ./test-data.sh
FOO BAR BAZ
LLAMA DUCK COW
Прежде всего, прагма perl "__DATA__" - это способ передачи входных данных в $_ без указания файла. В bash нет эквивалента, поскольку у него нет ничего похожего на $_. Однако вы можете предоставлять данные непосредственно в сценарии bash другими способами, такими как явное задание переменных, использование HERE docs и т.д.
Однако я не уверен, что это то, что вы хотите сделать. Похоже, вам нужен какой-то метод комментирования блоков. Так ли это?