一、 简单介绍
shell指的就是人机交互平台。常见的有IBM的ksh,HP的csh,windows的powershell以及linux的bash shell。
首先养成良好的习惯,通过#echo $SHELL命令可以查到默认shell。在脚本的开头加上声明。
如图,查询出的默认shell为/bin/bash,所以一般在脚本开头加上一行如下声明
#!/bin/bash
####其中,#!代表声明,如果只有#,则代表注释
单引号:遇到任何特殊字符都是原样输出
双引号:遇到特殊字符会转义后输出
二、 常见功能
- 定义变量
DIR=/backup/
DIR=”/backup/”
A=100
a=100
B=200
C=A+B
定义完之后使用echo $C命令可以查看具体变量的值。
$(command),可以引用命令执行的结果
例如:
CPU=$(df -h|grep -w / |awk ‘{print $5}’ |sed ‘s/%//’)
if [ “$CPU” -ge 80 ]; then
echo “warning,CPU is full”
else
echo “cpu is safe”
fi
******注意:if后面一定要加空格,不然会出现语法错误。
- 判断命令执行的结果
command1 && command2
##如果命令1执行成功了则执行命令2,反之则不执行命令2
command1 || command2
##如果命令1执行失败则执行命令2,反之则不执行命令2
或者用 echo $?来查询命令是否执行成功,如果返回值是0代表成功,1-255代表失败。
例如:
for num in $(seq 1 10)
do
hosts=192.168.6.$num
ping -c2 $hosts &> /dev/null
if [ “$?” = 0 ];then
echo “$hosts is up”
else
echo “$hosts is down”
fi
done
- test表达式判断
可以用main test去查看test的所有用法,这里举两个典型例子。
test -f passwd.1
##判断普通文件passwd.1是否存在
在脚本中可以简写成[ -f passwd.1],或者用[! -f passwd.1]表示反向判断。
- if判断
- for循环
例子:
for num in $(seq in 1 10)
do touch /tmp/file.$num && echo “/tmp/file.$num create successful!”
done
- 位置化参数
$1:取第一个参数
$2:取第二个参数
$*:取所有参数
$0:取脚本文件名
echo firstname:$1
echo lastname:$2
echo fullname:$*
:wq!
#./test.sh wu yequan
firstname:wu
lastname:yequan
fullname:wu yequan
if [ “$1” = redhat ];then
echo “fedora”
elif [ “$1” = redhat ]; then
echo “redhat”
else
echo “ERROR,Please reinput”
fi