shell文件以.sh结尾,这是一种习惯而已。第一行以#! /bin/bash开头;表示该文件使用的是bash语法;

如果不设置该行,你的shell脚本也可以执行,但是不符合规范。#表示注释。

 

# vim first.sh
输入以下内容
#! /bin/bash
date
echo "Hello world!"
退出文件编辑
# sh first.sh   执行脚本
# ./first.sh   提示权限不够
# chmod +x first.sh
# ./first.sh   执行脚本
# sh -x first.sh  查看shell的执行过程,方便调试
date用法
date  +%Y:以四位数字格式打印年分
date +%y:二位数展示年分
date +%m :月份
date +%d:日期
date +%H:小时
date +%M:分钟
date +%S:秒
date +%w:星期;0表示周日。
# date +"%Y-%m-%d %H:%M:%S"
# date -d "-1 day" +%d  一天前的日期
# date -d  "-1 hour" +%H  一个小时前
# date -d  "-1 min" +%M   一分钟前
变量
  1)变量名=变量值
  2)脚本中的反引号(键盘左上角 波浪线键)是将字符串当成shell命令执行,返回命令的执行结果。
d=`date  +%H:%M:%S`   变量
echo "脚本开始时间 $d."
echo "现在休眠2秒"
sleep 2
d1=`date +%H:%M:%S`     变量
echo  "脚本结束:$d1."
数学运算
a=1
b=2
sum=$[$a+$b]
echo "$a+$b=$sum"
和用户交互
read -p   "请输入一个数字:" x
read -p  "请再次输一个数字:" y
sum=$[$x+$y]
echo   "这个和是:$sum"
脚本预设变量
文件a.sh,内容如下
sum=$[$1+$2]
echo "sum=$sum"
执行脚本  sh a.sh   1 2
输出结果 sum=3
$1和$2是shell脚本的预设变量。  $0表示脚本本身的名字。
逻辑语句
  if
    if   判断语句;  then
       command
    fi
编写脚本文件 a.sh
read -p "请输入一个数字:" a
if((a<60)); then
  echo "$a 小于60"
fi
退出编辑
  if else
  if  判断语句; then
    command
  else
    command
  fi
新建a.sh,内容如下
read -p "请输入一个数字:" a
if((a<60)); then
  echo “小于60”
else
  echo "大于60"
fi
退出脚本编辑。
 else if
if 判断语句;then
  command
elif 判断语句;then
  command
else
  command
fi
新建sh文件a.sh,脚本如下
read -p "请输入数字:" a
if((a<60));then
  echo "小于60";
elif ((a<120)) && ((a>=60)); then
  echo "小于120,但是大于60"
else
  echo "大于120"
fi
判断大小除了使用(())形式外,还可以使用[ ];但是不能使用>,<,=了;
要使用-lt(小于),-gt(大于),-le(小于等于),-ge(大于等于),-eq(等于),-ne(不等于)。
# a=10; if [$a  -lt 5 ];then echo ok; fi
# a=10;if [$a  -gt 5];then echo ok; fi
# a=10; if [$a  -lt  1] || [$a  -gt  5];then echo ok;fi
文档的判断
格式:
if [-参数  filename];then
  command
fi
参数:
  -e:判断文件或目录是否存在
  -d:判断是不是目录以及是否存在。
  -f:判断是不是普通文件以及是否存在
  -r:判断是否有读的权限
  -w:判断是否有写权限
  -x:判断是否可执行
示例:
  if [ -d /home/];then echo ok;fi    判断home是否是目录以及是否存在。
case 逻辑判断
case 变量 in
value1)
  command
  ;;
value2)
  command
  ;;
*)
  command
  ;;
esac
read -p "输入一个数字:" n
a=$[$n%2]
case $a in
1)
  echo "奇数"
  ;;
2)
  echo "偶数"
  ;;
*)
  echo "不是一个数字"
  ;;
esac
 
for循环:seq 1 5表示从1 到5的序列。
示例1
 for i in `seq 1 5`;do
  echo $i
done
示例2 :循环字符和数字的组合
for i in 1 2 3  a b;do echo $i;done 
示例3:循环系统命令
for i in  `ls`;do echo $i;done
while 循环
while 条件;do
  command
done
示例1:
a=5
while [$a -ge 1];do
  echo $a
  a= $a-1
done
示例2:while死循环,用于监控
  while  :;do
    sleep 3
  done
 
函数
function sum()
{
  sum1=$[$1+$2+$3]
  echo $sum1
}
sum $1 $2 $3
运行脚本: sh a.sh 1 3 4    结果是8
break或continue(用法相似)
for i in `seq 1 5`
do
  echo $i
  if [$i==3]
  then
    break(或者 continue)
  fi
  echo $i
done
  echo aaa
exit退出整个shell脚本