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

Linux の Bash スクリプト、単一のコマンドで複数行?

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)_$(date +%Y%m%d).tar.gz \

A Few Shortcuts

($HOSTNAMEを設定するためのコメント更新に基づく)

$HOSTNAME

これを設定するには2つのオプションがあります。

1.HOSTNAMEを設定する

  1. コマンド置換を使用する(例: $(command))

$DATE

もう一つの避けたい変数は簡単です。

0x1&

$ man date は日付オプションのフォーマットを持っています。

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

次の行でコマンドを続行するにはバックスラッシュを使用します。

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
8