了解Linux中bash shell脚本的语法


 1.基础

  #!/bin/bash   //bash脚本第一句都是这个,他会让系统指定以bash来解释这个脚本

  #                 //shell脚本注释符号

  2.变量和使用

  HOME="/home"                //注意赋值不要有空格

  a=123

  HOME_LIST=$(ls /home) //把命令的执行结果赋值给变量

  ehco $HOME                   //$ 符号是获得变量HOME的值

  a=a+1

  系统变量:

  {GetProperty(Content)} 这个程序的执行名字

  $n  这个程序的第n个参数值,n=1...9

  $*  这个程序的所有参数

  $# 这个程序的参数个数

  $ 这个程序的PID

  $! 执行上一个背景指令的PID

  $? 上一个指令的返回值

  3.if语句

  if [ "22" -lt "33" ]   then   //注意空格

  echo "22 less than 33"

  else

  echo "no"

  fi                                  //if语句的结束

  4.case语句

  echo "enter a number"

  read ans                    //读取一个变量read

  case $ans in

  1)

  echo   "you numer is $ans"

  ;;                                //注意符号是两个 ;

  2)

  echo "you number is 2"

  ;;

  [3-9])

  echo "you number is $ans"

  ;;

  *)                                   //*通配符

  echo "others"

  esac

  5.比较运算符

  运算符                            描述                                            示例

  文件比较运算符

  -e filename        如果 filename 存在,则为真            [ -e /var/log/syslog ]

  -d filename       如果 filename 为目录,则为真       [ -d /tmp/mydir ]

  -f filename        如果 filename 为常规文件,则为真 [ -f /usr/bin/grep ]

  -L filename        如果 filename 为符号链接,则为真   [ -L /usr/bin/grep ]

  -r filename          如果 filename 可读,则为真              [ -r /var/log/syslog ]

  -w filename        如果 filename 可写,则为真            [ -w /var/mytmp.txt ]

  -x filename         如果 filename 可执行,则为真           [ -L /usr/bin/grep ]

  filename1 -nt filename2 如果 filename1 比 filename2 新,则为真 [ /tmp/install/etc/services -nt /etc/services ]

  filename1 -ot filename2 如果 filename1 比 filename2 旧,则为真 [ /boot/bzImage -ot arch/i386/boot/bzImage ]

  字符串比较运算符 (请注意引号的使用,这是防止空格扰乱代码的好方法)

  -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" ]

  算术比较运算符

  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 ]

  6.bash中几种循环

  6.1. for name [ in word ] ; do list ; done

  6.2. for (( expr1 ; expr2 ; expr3 )) ; do list ; done    //注意有2层括号

  6.3 while [expr] do list; done

  其中list简单说就是一串由操作符(operator ;、&、&&、||)

  分各给出一个简单例子:

  1.

  for filename in $(ls)

  do

  cat $filename

  done

  2.

  for((i=0; i<10; i++))

  do

  echo $i

  done

  3.

  x=1

  sum=0

  while [ $x -le 10 ] //注意[ ] 两边的空格

  do

  let sum=sum+$x   //shell中算术计算使用let

  let x=x+1

  done

  echo $sum


« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3