Сценарии оболочки анализируются построчно по мере их выполнения, поэтому вам просто нужно убедиться, что выполнение никогда не достигнет данных, которые вы хотите защитить. Вы можете сделать это, например:
# 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