Linux编写shell脚本并运行

创建脚本文件

第一步是使用以下命令创建一个扩展名为.sh的新文件:

1
[root@localhost ~]# touch hello_world.sh

写一个简单的脚本
使用vim编辑器打开新创建的文件,将以下bash脚本添加到文件中:

1
[root@localhost ~]# vim hello_world.sh

下面是添加到文件中的脚本内容:

1
#!/bin/bash echo "Hello World"

编辑完,保存并退出。

执行Bash脚本
有两种方法可以运行bash文件。
第一种是通过使用bash或sh命令。
另一种将文件添加可执行权限,就可以直接运行。

让我们运行以下命令以使用bash或sh命令执行bash脚本。

1
2
3
4
[root@localhost ~]# sh hello_world.sh 
Hello World
[root@localhost ~]# bash hello_world.sh
Hello World

为脚本文件设置可执行权限
执行bash脚本的第二种方法是设置可执行权限。

1
[root@localhost ~]# chmod +x hello_world.sh

可以看到hello_world.sh文件已经有x可执行权限了。

执行脚本
将可执行权限分配给脚本后,可以不带bash命令直接运行脚本,如下所示:

1
2
[root@localhost ~]# ./hello_world.sh 
Hello World

目录备份

在下面的示例中,我将编写并执行一个bash脚本以从源目录到目标目录进行备份:

1
[root@localhost ~]# vim backup_bash.sh

下面内容粘贴到backup_bash.sh文件中。

1
2
3
4
5
#!/bin/bash
TIME=`date +%Y_%m_%d`
DESTINATION=/tmp/backup-$TIME.tar.gz
SOURCE=/var/log
tar -zcvf $DESTINATION $SOURCE

保存脚本文件,并退出。为脚本文件添加可执行权限:

1
[root@localhost ~]# chmod +x backup_bash.sh

运行脚本:

1
[root@localhost ~]# ./backup_bash.sh

出现问题记录

1
2
[root@localhost ~]# ./backup_bash.sh 
-bash: ./backup_bash.sh: /bin/bash^M: bad interpreter: No such file or directory

解决办法
替换其中的\r

1
sed -i 's#\r$##g' backup_bash.sh

问题出现的原因

windows下,每一行的结尾是\n\r,而在linux下文件的结尾是\n,
那么你在windows下编辑过的文件在linux下打开看的时候每一行的结尾就会多出来一个字符\r。
用cat -A backup_bash.sh时你可以看到这个\r字符被显示为^M,这时候只需要删除这个字符就可以了。
可以使用命令sed -i ‘s#\r$##g’ backup_bash.sh 。

继开 wechat
欢迎加我的微信,共同交流技术