#find /usr/bin -xdev -type f -perm -u=s
               指有挂载网络资源的文件则忽略它  文件类型  有特权位u=s的文件

#vim sample_01.sh
命名标准,但是不一定要这样命名,只是方便认识

两种脚本执行方法:
   1 #. 02.sh   <----不一定要给脚本赋予执行权限
    这种方法会将02.sh中默认的执行方法忽略掉(既魔法字节一般为第一行),并且在当前的shell去执行脚本里的代码

   2 #./02.sh   <----一定要给脚本赋予执行权限
    这种方法会生成一个子shell(既魔法字节指定的shell)去运行脚本

变量-----一个可以存放内容的名字,实际上就是一个只想内存区域的指针

env 显示当前环境变量

 变量的类型:
  用户自定义变量,一般来说,只在脚本运作的时候才用到
  环境变量,特点:一般来说是大写的单词。作用:就是告诉命令该怎么去运行,运行时候的一些特性

  # export IBM="I am Bad Man"

  # UPL="Wel to upl"
  # export UPL
    
系统变量:系统默认就自带的,带有特殊用途

$1,$2,$3 .... $9  , ${10},${11},$@,$* ,$#,$?,$$

  状态码 :  exit  0~255
$$ 指当前执行的shell的pid号,也就是进程号
#wel to up
echo "wel to upl"
echo "wel\tto\tupl
#响一下分离器
echo -e "\a"


简单的算术表达式

let "a = a + b"
echo "a+b=$a"

#let "c = c + a"和下面的结果一样
let "c +=a" 意思将c本身在加上a然后再赋予c

d= `expr $c / $a`
echo "c/a=$d"
将c除以a执行的结果赋予d

shell默认不支持小数点运算,可以使用awk来实现或者bc
echo | awk '{print 0.5/2}'

条件判断

if [ condition ]
then
 command
 command
fi
如果满足条件则执行下列语句,然后fi结束

或者
if [ condition ];then
 command;command
 command
fi

分支:
if [ condition ];then
 command
 command
else
 command
 command
fi

多个分支:(对比嵌套2)
if [ condition ];then
 command
elif [ condition ];then
 command
else
 command
fi

嵌套1:
if [ condition ];then
 if [ condition ];then
  command
 fi
else
 command
fi

嵌套2:

if [ condition ];then
 command
else
 if [ condition ];then
 command
 fi

fi

= 判断字符串是否等于
!= 判断字符串是否不等于
-eq 判断数值是否等于
-gt 判断数值是否大于
-ge 判断数值是否大于等于
-lt 判断数值是否小于
-le 判断数值是否小于等于
-ne 判断数值是否不等于

-a  and的意思,逻辑与
-o  逻辑或,

$# 指参数的数量

作业:使用脚本完成下面任务,把脚本上传到 /share/homework/03下对应自己的名字的文件夹 


 1、执行一个脚本,交互模式输入一个文件,需要判断这是一个普通文件还是目录,并判断这个文件的权限,把文件类型(文件还是目录),权限结果输出 

 2、判断某个目录下所有文件的大小,并以邮件通知的形式告诉管理员root

 3、备份文件或目录到某个NFS目录里 。提示:先mount 然后打包复制 ,最后umount

 4、交互模式输入一个文件,判断这个文件是否是符号链接文件,如果是,再判断这个文件是否为死链接
 5、交互模式要求输入一个ip,然后脚本判断这个IP 对应的主机是否 能ping 通,输出结果类似于:
 Server  10.1.1.20 is Down!

 要求把作业上传到 /share/homework 自己新建一个子目录