Согласно документации для очереди sysfs файлы:
# cat /sys/block/sda/queue/hw_sector_size
512
Можно изменить оператор здесь-документа на <<-
. Можно затем расположить с отступом и здесь-документ и разделитель с вкладками:
#! /bin/bash
cat <<-EOF
indented
EOF
echo Done
Обратите внимание, что необходимо использовать вкладки, не пробелы для расположения с отступом здесь-документа. Это означает, что вышеупомянутый пример не будет работать скопированный (Exchange стека заменяет вкладки пробелами). Не может быть никаких кавычек вокруг первого EOF
разделитель, еще расширение параметра, замена команды и арифметическое расширение не в действительности.
вы можете подключить его к sed
:
.... | sed -n "/0.1.0/,/1.0.2/p" YourFile
Хм ... Похоже, вы можете сделать лучшее преимущество - формат
аргумента здесь - Направьте
вместо этого и просто пройти на трубку. Кроме того, ваш если ... Fi
- это составное командование - он может взять перенаправление, которое все содержащие команды наследуют, поэтому, может быть, вам не нужно вообще не нужно гнездить.
if [ "$diffLines" = 1 ]
then stat --printf "Last Change: %.19y\n\n$(cat)\n" /.bbdata |
mailx -r "Systems and Operations <sysadmin@[redacted].edu>" \
-s "Warning Stale BB Data" 'jadavis6@[redacted].edu'
else echo "$diffLines have changed"
fi <<\STALE
This is an automated warning of stale data for the UNC-G Blackboard Snapshot process.
STALE
Другой метод был бы ивидением:
mail_content="Last Change: $dateLastChanged
This is an automated warning of stale data for the UNC-G Blackboard Snapshot process."
mailx -r "Systems and Operations <sysadmin@[redacted].edu>" -s "Warning Stale BB Data" jadavis6@[redacted].edu <<<"$mail_content"
Если вам не нужны подстановка команд и раскрытие параметров внутри документа -, вы можете избежать использования табуляции, добавив начальные пробелы к разделителю:
$ cat << ' EOF'
> indented
> EOF
indented
$ cat << ' EOF' | sed -r 's/^ {8}//'
> unindented
> EOF
unindented
Однако я не мог придумать, как использовать этот трюк и сохранить раскрытие параметров.
Этот ответ специфичен для GNU -Bash -.
Хитрость заключается в том, что мы используем <<<
одно -слово здесь -doc, предлагаемое Bash, и делаем его составной -позицией.
Мы также избегаем UUoC :нам не нужен процесс cat
для подачи входных данных вsed
:
$ sed '1d;s/^ //' <<<"
{
TERM=$TERM
}
bye"
Вывод показывает, что четыре пробела в начале -удалены и $TERM
расширены:
{
TERM=xterm-256color
}
bye
Команда 1d
в sed
предназначена для удаления первой пустой строки, которая существует, потому что наш литерал в кавычках начинается с новой строки после открывающей кавычки.
Конечно, в реальном сценарии, для которого это в dent ed — простите, в tended ed — мы бы выровняли фигурные скобки с помощью команды sed
, который будет иметь отступ внутри цикла или условного оператора.
Если мы начнем каждую строку данных с разделителя, то простая sed
замена удалит переменную величину отступа, так что блок можно будет свободно перемещать между уровнями отступа:
while command ; do
if condition ; then
variable=$(sed '1d;s/^.*|//' <<<"
|{
| TERM=$TERM
|}
|bye
")
fi
done
Последняя идея — поместить магию отступа в переменную, которая используется как своего рода макрос:
# put in some common definitions library section
indent='sed 1d;s/^.*|//'
#...
while command ; do
if condition ; then
variable=$($indent <<<"
|{
| TERM=$TERM
|}
|bye
")
fi
done
Мы можем улучшить это, написав старую добрую -модную функцию:
# put in some common definitions library section
ind()
{
sed '1d;s/^.*|//' <<<$1
}
#...
while command ; do
if condition ; then
variable=$(ind "
|{
| TERM=$TERM
|}
|bye
")
fi
done
Тогда мы полностью абстрагируем <<<
.
$dateLastChanged
) если я делаю hypen+quotes вещь в Вашем примере, но если я вынимаю дефис и кавычки и помещаю EOI на новую строку, это начинает разворачивать его снова. – Bratchley 20.05.2013, 21:17cat << EOF | sed 's/^ *//'
и так далее. – choroba 19.11.2015, 21:33cat <<- EOF | awk 'NR==1 && match($0, /^ +/){n=RLENGTH} {print substr($0, n+1)}'
. Это удаляет сумму предыдущих пробелов в первой строке от каждой строки в сюда документ (благодаря anubhava). – con-f-use 21.11.2015, 12:40