2012-11-21 03:09:10 +0000 2012-11-21 03:09:10 +0000
117
117

Linux Bash Script, Single Command But Multiple Lines?

У меня есть следующий скрипт, который я написал при поиске в Google, и он копирует мою систему Linux в архив:

#!/bin/bash
# init

DATE=$(date +20%y%m%d)

tar -cvpzf /share/Recovery/Snapshots/$HOSTNAME_$DATE.tar.gz --exclude=/proc --exclude=/lost+found --exclude=/sys --exclude=/mnt --exclude=/media --exclude=/dev --exclude=/share/Archive /

Это работает, но мне интересно, смогу ли я отформатировать скрипт так, чтобы он показывал команду через несколько строк, что-то вроде этого, так что его легко отредактировать позже:

tar -cvpzf /share/Recovery/Snapshots/$HOSTNAME_$DATE.tar.gz 
--exclude=/proc 
--exclude=/lost+found 
--exclude=/sys 
--exclude=/mnt 
--exclude=/media 
--exclude=/dev 
--exclude=/share/Archive 
/

Таким образом, его проще читать и редактировать позже. Возможно ли таким образом отформатировать Bash скрипт?

Ответы (3)

153
153
153
2012-11-21 03:14:44 +0000

Все, что вам нужно сделать, это добавить “\” в конце каждой строки, и это должно быть хорошо, чтобы идти.

Так что ваша будет выглядеть:

tar -cvpzf /share/Recovery/Snapshots/$(hostname)_$(date +%Y%m%d).tar.gz \
    --exclude=/proc \
    --exclude=/lost+found \
    --exclude=/sys \
    --exclude=/mnt \
    --exclude=/media \ 
    --exclude=/dev \
    --exclude=/share/Archive \
    /

Несколько ярлыков

(на основе вашего обновления комментариев для установки $HOSTNAME)

$HOSTNAME

Два варианта установки:

  1. установить HOSTNAME

  2. Используйте замену команд (например, $(command))

$DATE

Другая переменная, которой можно избежать, будет легко:

$(hostname)_$(date +%Y%m%d).tar.gz \

$ man date будет иметь форматы для опций даты, выше будет YYYYmmdd

11
11
11
2012-11-21 03:15:48 +0000

Используйте обратный слеш для продолжения команды на следующей строке:

tar -cvpzf /share/Recovery/Snapshots/$HOSTNAME_$DATE.tar.gz \
--exclude=/proc \
--exclude=/lost+found \
--exclude=/sys \
--exclude=/mnt \
--exclude=/media \
--exclude=/dev \
--exclude=/share/Archive \
/
6
6
6
2018-01-17 22:03:43 +0000

Та же самая команда, но с комментариями для каждой строки:

tar -cvpzf /share/Recovery/Snapshots/$(hostname)_$(date +%Y%m%d).tar.gz `#first comment` \
    --exclude=/proc `#second comment` \
    --exclude=/lost+found `# and so on...` \
    --exclude=/sys \
    --exclude=/mnt \
    --exclude=/media \ 
    --exclude=/dev \
    --exclude=/share/Archive \
    /

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

6
10
11
5
9