• (转)Linux bash shell脚本语法入门


    http://www.linuxsky.org/doc/newbie/201004/389.html

      

    1.基础

      

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

      

    2.变量和使用

      

    HOME="/home"                //注意赋值不要有空格
    
    a=123
    
    HOME_LIST=$(ls /home) //把命令的执行结果赋值给变量
    
    ehco $HOME                   //$ 符号是获得变量HOME的值
    
    a=a+1

      系统变量:

      $0 这个程序的执行名字

      $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

  • 相关阅读:
    Vijos P1448 校门外的树【多解,线段树,树状数组,括号序列法+暴力优化】
    Vijos P1785 同学排序【模拟】
    Vijos P1784 数字统计【模拟】
    Vijos P1497 立体图【模拟】
    将你的wordpress博客添加到百度个性首页
    改变wordpress图片上传后的压缩质量
    优化dedecms设置文章url自定义规则
    dedecms首页调用随机文章全自动时时更新
    怎样在wordpress后台显示日志 ID
    sql批量修改wordpress文章发布时间
  • 原文地址:https://www.cnblogs.com/greywolf/p/3460126.html
Copyright © 2020-2023  润新知