trzxycx 发表于 2018-8-20 07:58:54

NO3.Shell脚本学习——编写Shell脚本

  Shell脚本


[*]用途:完成特定的、较复杂的系统管理任务。
[*]格式:集中保存多条Linux命令,普通文本文件
[*]执行方式:按照预设的顺序依次执行的命令
  执行Shell脚本的方式:
  1.bash test.sh
  //不需要写解析器
  //不需要给脚本设置执行权限


[*]./test.sh  //需要写解析器——脚本首行
  #!/bin/bash
  //需要给脚本设置执行权限
  chmod a+x test.sh

  写个Shell的小例子
  test.sh:
  

#!/bin/bash  
echo '23123123'
  
echo 'disk space:'
  
echo
  
df -Th
  
echo
  
echo 'free space:'
  
free -m
  

  小例子:每周五17:30 清理FTP服务器的公共共享目录
  检查/var/ftp/pub/ 目录,将其中所有子目录及文件的详细列表、当时的时间信息追加保存到/var/log/pubdir.log日志文件中,然后清空该目录
  示例:
  

vi /opt/ftpclean.sh  `#!/bin/bash
  date >> /var/log/pubdir.log
  ls -lhR /var/ftp/pub >> /var/log/pubdir.lg
  rm -rf /var/ftp/pub/*
  

  crontab -e
  30 17 * * 5/opt/ftpclean.sh`
  

  Shell变量种类


[*]用户自定义变量   name="user1"引用:${name}
[*]预定义变量
[*]位置变量**
  输入赋值:read[-p "信息"] 变量名
  双引号:能解析变量
  单引号:不能解析变量
  反引号:解析命令并输出
  删除变量:unset 变量名
  位置变量(传参):
  

test.sh  
#!/bin/bash
  
#test.sh
  
echo $1
  
echo $2
  
echo $3
  
echo $4
  
echo $5
  
echo $6
  
echo $7
  
echo $8
  

  调用:sh test.sh 1 2 3 4 5 6 7 ...(最多识别9个)
  执行结果:
  1
  2
  3
  4
  5
  6
  7
  ...
  预定义变量:
  $#:命令行中位置参数的个数
  $*:所有参数的内容
  $?:上一条命令执行后返回的状态,当返回状态值为0时表示执行正常,非0表示执行异常或出错
  $0:当前执行的进程/程序名
  shell计算
  $(($1+$2)) (不需要转义)         or      expr 2 + 3 +4 (需要转义)
  expr 4 * 2
  expr 4 / 2
  expr 4 % 2
  and so on...
  shell输入、输出
  输入
  ``
  echo -n||e
  -n
  -e可以解析转义字符
  //设置字体颜色
  echo -e "httped process \033\033[0m"
  \033[前景颜色;背景颜色m
  \033[0m恢复到系统默认的颜色
  前景颜色:30-37
  背景颜色:40-47
  **输出**
  cat、head(首n行)、tail(尾n行)、tee(输出一份并保存一份)、nl(加行号)
  ``


页: [1]
查看完整版本: NO3.Shell脚本学习——编写Shell脚本