我们在上一篇中已经学习了一些shell的脚本实例。
在实战(二)中我们对脚本的运行 使用了命令的方式,也就是直接 粘贴 在 控制台中 回车运行。
我们发现一些实例 已经出现了 2个以上的函数。 所以 当作命令行来运行显得太多了。
这次我们学习 把脚本 写入sh文件 然后 执行shell脚本sh文件。
我们以 实战(二)中的 监控目录占用的系统磁盘空间 为例子 学习运行shell脚本sh的完整步骤。
function GetDiskSpc { if [ $# -ne 1 ] then return 1 fi Folder="$1$" DiskSpace=`df -k |grep $Folder |awk '{print $5}' |awk -F% '{print $1}'` echo $DiskSpace }
function CheckDiskSpc { DiskSpace=`GetDiskSpc $1` echo "The system $Folder disk space is $DiskSpace%" if [ $DiskSpace -gt 90 ] then { echo "The usage of system disk($Folder) is larger than 90%" } else { echo "The usage of system disk($Folder) is normal" } fi }
CheckDiskSpc /boot
我们已经知道了监控目录占用系统磁盘空间使用的函数和命令。
那么我们把它写成一个sh文件。
步骤如下:
新建一个命令为checkSpace.txt文件,加上sh文件头标识#!/bin/bash后 把 以上函数和命令 写进入,再重命名成checkSpace.sh即可。
#!/bin/bash function GetDiskSpc { if [ $# -ne 1 ] then return 1 fi Folder="$1$" DiskSpace=`df -k |grep $Folder |awk '{print $5}' |awk -F% '{print $1}'` echo $DiskSpace } function CheckDiskSpc { DiskSpace=`GetDiskSpc $1` echo "The system $Folder disk space is $DiskSpace%" if [ $DiskSpace -gt 90 ] then { echo "The usage of system disk($Folder) is larger than 90%" } else { echo "The usage of system disk($Folder) is normal" } fi } CheckDiskSpc /boot
如图:
bash shell 脚本的方法有多种,现在作个小结。假设我们编写好的shell脚本的文件名为checkSpace.sh,文件位置在/data/shell目录中并已有执行权限。
切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本:
cd /data/shell ./checkSpace.sh
以绝对路径的方式去执行bash shell脚本:
/data/shell/checkSpace.sh
直接使用bash 或sh 来执行bash shell脚本:
cd /data/shell bash checkSpace.sh
cd /data/shell sh checkSpace.sh
在当前的shell环境中执行bash shell脚本:
cd /data/shell . checkSpace.sh
cd /data/shell source checkSpace.sh
上面我们已经准备好了sh文件,也学习了执行sh文件的几种方法。
现在我们就按方法一来运行。
首先需要把sh文件送到 linux系统的 /data/shell目录中。
我这里文件传输使用的是SSH Secure File Transfer Client工具。
操作工具使用的PieTTY
PieTTY下载:
window系统连接linux系统的工具PieTTY
用linux的ip和帐号root,ssh默认端口是22登录输入密码后把sh文件放到/data/shell目录中。joe帐号权限不够
我们发现还没有/data/shell目录。则在pieTTY中用su命令切换到root账户新建目录并给执行权限。
关于权限有不了解的可参考chmod命令:
linux基础(七)----linux命令系统学习----系统安全相关命令
mkdir -p /data/shell
给checkSpace.sh文件执行权限
按照方法一运行sh脚本:
cd /data/shell chmod 777 checkSpace.sh ./checkSpace.sh
syntax error near unexpected token `的问题
如果你在windows里写的shell脚本放到linux系统里运行就可以会提示如下错误syntax error near unexpected token `...这是因为两个平台下面的换行符不一样导致的。所以需要转换下格式,notepad++就有这个功能。
首先打开notepad++,让脚本显示所有符号,发现是CR LF
我们需要将windows的格式转为linux格式,做如下操作即可。
编辑->档案格式转换->转换为UNIX格式
转换之后,发现回车换行符就变LF了。再放入linux就不会报错了。