liuyuehua 发表于 2018-8-27 08:01:26

SHELL-命令解释程序


[*]  理解shell的作用及分类
[*]  设置和使用shell变量
[*]  编写简单的shell脚本
[*]  熟悉条件测试的应用
[*]  使用if条件语句
[*]  使用for.while循环语句
[*]  使用case分支语句
[*]  了解其它控制语句及函数
  cat /etc/shells
  cat /etc/passwd
  /bin/sh
  定义新的变量
  变量名要以英文字母或下划线开头,区分大小写
  格式:变量名=变量值
  查看变量的值
  格式:echo $变量名
  DAY=Monday
  echo $DAY
  Monday
  从键盘输入内容为变量赋值
  格式:read 【-p "信息”】 变量名
  双引号“” 允许通过$符号引用其他变量值
  单引号 ''   禁止引用其他变量值,$视为变通字符
  反撇号 ``将命令执行的结果输出给变量
  设置变量的作用范围
  格式: export 变量名...
  export 变名=变量值【变量名n=变量值】
  清除用户定义的变量
  格式: unset 变量名
  SRV=srv.xapc.com.cn
  echo $SVR
  export SRV
  环境变量配置文件
  全局配置文件 /etc/profile
  用户配置文件 ~/.bash_profile
  查看环境变量set
  常见的环境变量:
  $USER $LOGNAME
  $UID $SHELL $HOME
  $PWD $PATH
  $PS1 PS2
  echo $PATH
  PATH="/opt/bin:$PATH"
  echo $PATH
  位置变量
  表示为$n,n为1-9之间的数字。
  ./test1 one two
  预定义变量表示形式如下
  $#:命令行中位置参数的个数
  $*:所有位置参数的内容
  $?:上一条命令执行后返回的状态,当返回状态值时表示执行正常,非0值表示执行异常或出错。
  $$:当前所在进程的进程号
  $!:后台运行的最后一个进程号
  $0:当前执行的进程/程序名
  编写可执行shell脚本
  运行环境设置:#!/bin/bash
  注释信息
  命令
  运行shell脚本三种方式
  直接执行具有X权限
  例如:./boot.sh
  使用指定的解释器程序执行脚本内容
  例如:bash boot.sh、sh boot.sh
  通过source命令(或.)读取脚本内容执行
  例如:source boot.sh 或.boot.sh
  条件测试
  格式1:test 条件表达式
  格式2:【条件表达式】常
  [操作符 文件或目录】
  -d:是否目录
  -e:是否存在
  -f:是否为文件
  -r:当前用户是否有读权限
  -w:当前用户是否有写权限
  -x:当前用户是否有执行权限
  -L:是否是Link文件
  整数比较
  格式【整数1 操作符 整数2】
  -eq:= equal
  -ne:bu = not equal
  -gt:> Greater than
  -lt:< lesser than
  -le:= greater or equal
  字符串比较
  格式【字符串1 = 字符串2】相同
  【字符串1 != 字符串2】不同
  【-z 字符串】为空
  【LANG !=“en.US"] && echo $LANG
  zh_CN.UTF-8
  逻辑测试
  格式:【表达式1】操作符【表达式2】。。
  常用的测试操作符
  -a或&&:逻辑与,“而且”的意思
  前后两个表达式都成立时
  -o或||:逻辑或,‘或者’
  前后两个表达式只要一个成立
  !:逻辑否
  当指定的条件不成立时,返回结果为真
  分支判断
  if then eles fi
  if 条件测试命令1;then
  命令序列1
  elif 条件测试命令2;then
  命令序列2
  elif
  else
  命令序列n
  fi
  #!/bin/bash
  for TM in "M" "N" "E"
  do
  echo "Then $TM of the day."
  done
  #!/bin/bash
  DIR="/opt"
  LMT=100
  ValidUsers=`grep "/bin/bash" /etc/passwd|cut -d ":" -f 1`
  for Username in $ValidUsers
  do
  Num=`find $DIR -user $UserName|wc -l`
  if[$Num -gt $LMT];then
  echo "$UserName have $Num files."
  fi
  done
  批量添加20个帐号
  #!/bin/bash
  i=1
  while[ $i -le 20 ]
  do
  useradd user$i
  echo "123456" |passwd --stdin user$i &> /dev/null
  i=`expr$i+1`
  done
  批量删除20个帐号
  #!/bin/bash
  i=1
  while[ $i -le 20 ]
  do
  userdel -r user$i
  i=`expr $i + 1`
  done
  case 根据变量的不同取值,分别执行不同的命令操作
  case 变量值 in
  #!/bin/bash
  case $1 in
  start)
  echo "Start MYSQL service"
  ;;
  stop)
  echo "Stop MYSQL service"
  ;;
  *)
  echo "Usage: $0 start|stop"
  ;;
  esac
  until执行重复操作
  shift用于迁移位置变量,将$1~$9座次向左传递
  例如,若当前脚本程序获得的位置变量如下:
  #!/bin/bash
  Result=0
  while [ $# -gt 0 ]
  do
  Result=`expr $Result + $1`
  shift
  done
  echo "The sum is : $Result"
  break
  continue
  函数应用
  #!/bin/bash
  adder(){
  echo `expr $1 + $2`
  }
  adder 12 23
  adder 223 1

页: [1]
查看完整版本: SHELL-命令解释程序