Содержимое документа здесь -подвергнется расширению (переменных и подстановок команд ), если документ не указан в кавычках. В вашем случае документ здесь -не заключен в кавычки, поэтому $id
расширяется. Вероятно, переменная была не установлена при перенаправлении документа, поэтому ее значение расширяется до пустой строки. Это создает впечатление, что переменная «исчезла».
Вместо:
cat >run_pos2bed3.sh <<'END_SCRIPT'
ls 2*/peaks.txt |
while read id; do
echo "$id"
done
END_SCRIPT
или, для более безопасного скрипта (переменная id
на самом деле не нужна ),
cat >run_pos2bed3.sh <<'END_SCRIPT'
printf '%s\n' 2*/peaks.txt
END_SCRIPT
Именно одинарные кавычки в 'END_SCRIPT'
делают здесь -документ, цитируемый (это также может быть записано как "END_SCRIPT"
или\END_SCRIPT
).
Я также процитировал расширение $id
в самом документе, как того требует хорошая практика сценариев оболочки (, см., например. Когда необходимо двойное -цитирование?).
- Why doesn't "used + available = total"?
Поскольку доступная память представляет собой подмножество используемой и свободной памяти, :это объем памяти, который можно использовать, не заставляя систему выполнять подкачку, т. е. свободная память плюс тот объем памяти, который в настоящее время используется для кэш, который можно удалить немедленно. См. Как я могу получить объем доступной памяти, переносимый между дистрибутивами? для деталей расчета.
- Why doesn't "free + buffer + cache = available"?
Поскольку некоторая часть памяти, используемой для буферов и кеша, недоступна :, она не может быть вытеснена немедленно, иначе ее использование поднимет систему выше водяного знака.
- Why doesn't "active + inactive + free = total"?
Потому что значения active и inactive отражают соответствующие LRU, а некоторые страницы там не отслеживаются — например, таблицы страниц(PageTables
)— или не подлежат удалению(Unevictable
).
Are there any other similar equations?
В выводе free
«использовано» рассчитывается как «всего — свободно — кэшированных — буферов», если результат не отрицательный (, что может случиться , например. в LXC ), в этом случае «всего — бесплатно». Таким образом, во всех случаях «всего» будет либо «использовано + свободно + кешировано + буферы», либо «использовано + свободно».