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)

$HOSTNAME

有两个选项可以设置:

1.设置HOSTNAME

  1. 使用命令替换(如$(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 \
    /