Linux Bash脚本,单个命令但多行?

Modified on: Wed, 14 Nov 2018 21:40:03 +0800

我通过搜索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 /

这很有效,但我想知道我是否可以格式化脚本以在多行上显示命令,这样就可以了,所以以后很容易编辑:

#!/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 /

这样以后更容易阅读和编辑。是否可以通过这种方式格式化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

设置它的两个选项:

1)设置HOSTNAME

  

HOSTNAME = $(主机名)

2)使用命令替换(例如$(command)

所以它看起来像上面那样。这只是在使用它之前运行命令。

$ DATE

避免的另一个变量很容易:

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

$ man date将具有日期选项的格式,上面是YYYYmmdd

作者:,nerdwaller

相关问答

添加新评论