Как выделить несколько строк с отступом в функции bash?

Это просто nohupговорит вам, что он настроен; он выводит это в свою стандартную ошибку, которую вы перенаправили на nohup.err. Вы можете избежать сообщения, перенаправив его стандартный ввод:

nohup bash life.bash > nohup.out 2> nohup.err < /dev/null &

nohupпроверяет свой стандартный ввод, стандартный вывод и стандартную ошибку, чтобы увидеть, какие из них подключены к терминалу; если он находит подключенные, он обрабатывает их соответствующим образом (, игнорируя ввод, перенаправляя вывод на nohup.out, перенаправляя ошибку на стандартный вывод )и сообщая вам, что он сделал. Если он не находит ничего, что нужно отключить, он ничего не выводит сам.

1
22.10.2019, 11:51
2 ответа

Либо используйте вкладки и<<-EOF(с дефисом ), либо используйте фильтр вместо кота, например.sed:

$ sed -e "s/^\s*//" <<EOF
 as
  df
   gh
    jk
        op    # two tabs
EOF

При этом удаляются как пробелы, так и табуляции. Обратите внимание, что закрытие EOFне может иметь отступ. Вы можете использовать <<" EOF", а затем снова " EOF"с тем же количеством пробелов, что и конечный токен, но кавычки блокируют расширения в документе здесь -, что вам не нужно в данном случае. Сравните:

$ a=x
$ cat <<EOF
"$a"
EOF
"x"
$ cat <<"EOF"
"$a"
EOF
"$a"

Что касается echo, то у него с этим проблемы. Но вы можете использовать printfтакже:

printf "%s\n" \
  "[influxdb]" \
  "name = InfluxDB Repository - RHEL \$releasever" \
  "baseurl = https://repos.influxdata.com/rhel/\$releasever/\$basearch/stable" \
  "enabled = 1" \
  "gpgcheck = 1" \
  "gpgkey = https://repos.influxdata.com/influxdb.key" \
| sudo tee /etc/yum.repos.d/influxdb.repo

Я оставил тире в \$, как и в вашем вопросе, но они могут быть здесь неправильными, так как они избегают расширений.

3
27.01.2020, 23:30

Вы можете использоватьecho -e "\tblabla":

$ echo -e "\tblabla\n\t\tblibli\n\t\t\tbloblo\n"
    blabla
        blibli
            bloblo

Как объяснено на странице руководства bash:

If the -e option is given, interpretation of the following backslash-escaped characters is enabled.
[...]
              \a     alert (bell)
              \b     backspace
              \c     suppress further output
              \e
              \E     an escape character
              \f     form feed
              \n     new line
              \r     carriage return
              \t     horizontal tab
              \v     vertical tab
              \\     backslash
              \0nnn  the eight-bit character whose value is the octal value nnn (zero to three octal digits)
              \xHH   the eight-bit character whose value is the hexadecimal value HH (one or two hex digits)
              \uHHHH the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value HHHH (one to four hex digits)
              \UHHHHHHHH
                     the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value HHHHHHHH (one to eight hex digits)

0
27.01.2020, 23:30

Теги

Похожие вопросы