質問: 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スクリプトをこのようにフォーマットすることは可能ですか?
回答: あなたがする必要があるのは各行の終わりに "\"を追加することだけであり、それは行ってもいいはずです。だからあなたのようになります: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それを設定する2つのオプション: hostnameを設定 hostname = $(ホスト名) コマンド置換を使用する(例:$(command)) それでそれは上のように見えるでしょう。使用する前にコマンドを実行するだけです。 $date避けられるもう一つの変数は簡単でしょう:$(hostname)_$(date +%y%m%d).tar.gz \ $ man dateは日付オプションのフォーマットを持ちます、上記はyyyymmddです