hc6538 发表于 2018-8-19 07:42:17

脚本shell-wangxiang

  一:基础介绍
  1优先级
  别名-->内部命令-->外部命令
  2. 脚本调试
  sh-xfoo.sh
  sh-efoo.sh
  3三种定界符
  "字符串。。。。$变量名"   #双引号用于界定不连续的字符,支持变量
  '字符串。。。。$ # ?'      #单引号无法引用变量
  `command`   或者$(command)【命令替换】#反撇号用于执行命令,等同于$()
  二:运算
  1 Shell整数运算
  方法1:
  expr表达式
  方法2:
  echo$[表达式]
  echo$((表达式))
  自增运算
  letA++或者((A++))
  let表达式      或者   ((表达式))
  2小数用管道交给 bc
  echo"表达式"|bc
  三:变量
  1 变量基本操作 ——
  变量名=值
  echo$变量名
  2 变量的几种类型 ——
  自定义变量
  环境变量:变量名一般全大写字母、用户登录后自动设好
  位置变量:$1、$2、$3。。。。${10}。。。
  预定义变量:
  $0表示Shell本身的文件名,$#表示变量的个数,$*将所有位置变量作为一个整体,$@
  将所有位置变量作为一个字符串,$! 表示最后运行的后台Process的PID,$? 表示返回值
  3 read -p "请输入你的名字:" name#输入的数值将赋值给变量name
  四: 条件判断与循环
  1 文件和目录的状态测试
  -e filename如果 filename存在,则为真[ -e /var/log/syslog ]
  -d filename如果 filename为目录,则为真[ -d /tmp/mydir ]
  -f filename如果 filename为常规文件,则为真[ -f /usr/bin/grep ]
  -r filename如果 filename可读,则为真[ -r /var/log/syslog ]
  -w filename如果 filename可写,则为真[ -w /var/mytmp.txt ]
  -x filename如果 filename可执行,则为真[ -x /usr/bin/grep ]
  -s filename如果文件有数据,则为真[ -s /etc、passwd ]
  #方括号和数据之间必须有空格,前面加!表示取反[ ! -x /usr/bin/grep ]
  2 整数值比较:
  num1-eq num2等于[ 3 -eq $mynum ]
  num1-ne num2不等于[ 3 -ne $mynum ]
  num1-lt num2小于[ 3 -lt $mynum ]
  num1-le num2小于或等于[ 3 -le $mynum ]
  num1-gt num2大于[ 3 -gt $mynum ]
  num1-ge num2大于或等于[ 3 -ge $mynum ]
  3 字符串比较:
  -z string如果 string长度为零,则为真[ -z "$myvar" ]
  -n string如果 string长度非零,则为真[ -n "$myvar" ]
  string1== string2如果 string1与 string2相同,则为真[ "$myvar" == "one two three" ]
  string1!= string2如果 string1与 string2不同,则为真[ "$myvar" != "one two three" ]
  &&||   ;
  4 函数及中断控制
  break放弃当前的整个循环语句,---》跳到done之后
  continue放弃当前这一次循环语句,---》返回while [ 测试条件 ]
  exit退出当前的整个脚本
  shift处理位置变量
  5if选择结构 ——
  单分支:
  if[ 条件测试 ];
  then
  命令序列....
  fi
  双分支:
  if[ 条件测试 ]
  then
  命令序列1....
  else
  命令序列2....
  fi
  多分支:
  if[ 条件测试1 ]
  then
  命令序列1....
  elif[ 条件测试2 ]
  then
  命令序列2....
  else
  命令序列3....
  fi
  6for循环结构 ——
  for变量名in   值1   值2值3 ....
  do
  命令序列....
  done
  4 while循环结构 ——
  while[ 条件测试 ]
  do
  命令序列....
  Done
  7   当条件成立的时候结束循环
  until[ .. .. ]
  do
  cmd1 .. ..
  done
  8 类C语言风格的for循环
  for((i=1;i
页: [1]
查看完整版本: 脚本shell-wangxiang