bash 与 csh 区别

    • BASH中的算术运算表达式

      定义变量:

      Var=2

      Var1=3

      Var2=4

      可用的写法:

      1、Var=$[$Var1 + $Var2] 或 Var=$[$Var1 + 1]

      2、Var=$[Var1 + Var2] 或 Var=$[Var1 + 1]

      3、Var=$(($Var1 + $Var2)) 或 Var=$(($Var1 + 1))

      4、Var=$((Var1 + Var2)) 或 Var=$((Var1 + 1))

      5、let Var=$Var1+$Var2 或 let Var=$Var1+1

      6、let Var=Var1+Var2 或 let Var=Var1+1

      7、Var=`expr $Var1 + $Var2` 或 Var=`expr $Var1 + 1`

      其中2与3等价,即:bash把"(())"连接到let命令上了,并且"(())"中的变量不用带美元符号"$".


      CSH中的算术运算表达式

      set Count=1

      set Var=1

      @ Count=1

      @ Var=1

      可用的写法:

      1、@ Count=$Count + $Var 或 @ Count=$Count + 1

      2、@ Count++

      3、@ Count ++

      4、@ Count += 1

      5、@ Count+=1

    • Bash与Csh中数组的比较


      BASH中的数组

      数组必须是使用""或括起来的一系列用空格分隔的串,使用[]来引用数组元素.

      如:

      Users="User1 User2 User3 User4"

      Fruits='Apple Orange Bananer Pear'


      CSH中的数组

      数组是使用()或""或括起来的一系列用空格分隔的串,使用[]来引用数组元素.

      如:

      set Users=(User1 User2 User3 User4)

      set Number="Num1 Num2 Num3 Num4"

      set Fruits='Apple Orange Bananer Pear'

    • Bash与Csh中控制结构的比较


      BASH的控制结构

      1、if结构,有以下几种:

        (1): if [ Condition-Expression ]; then 
      
    •           Commands
    •        fi 
      
    •   (2): if [ Condition-Expression ]; then  (不要忘了then 前面有分号,csh没有)
    •           Commands1
    •        else
    •           Commands2 
      
    •        fi
    •  (3): if [ Condition-Expression1 ]; then 
      
    •           Commands1
    •       elif [ Condition-Expression2 ]; then 
      
    •           Commands2
    •       elif [ Condition-Expression3 ]; then 
      
    •           Commands3
    •       else 
      
    •           Commands4 
      
    •       fi
    •  (4): case 结构: 
      
    •       case $var in 
      
    •            value-list1) 
      
    •                Commands-1 
      
    •            ;; 
      
    •            value-list2) 
      
    •                Commands-2 
      
    •           ;; 
      
    •            value-list3) 
      
    •                Commands-3 
      
    •           ;; 
      
    •           *) 
      
    •                Commands-N 
      
    •           ;; 
      
    •           esac 

      2、循环结构,有以下几种:

        (1): for 结构:
    •        for var in Value-List 
      
    •        do 
      
    •          Commands 
      
    •        done 
      
    •  (2): while 结构: 
      
    •       while [ Condition-Expression ] 
      
    •       do
    •          Commands 
      
    •       done
    •  (3): until 结构: 
      
    •       until [ Condition-Expression ] 
      
    •       do 
      
    •          Commands 
      
    •       done 


      CSH的控制结构

      1、if结构,有以下几种: 注意,条件判断语句中的then关键字一定要与if/else if在同一行上,这点与bash不同.

        (1): if(Condition-Expression) then
    •          Commands
    •        endif
    •   (2): if(Condition-Expression) then 
      
    •          Commands1 
      
    •        else 
      
    •          Commnads2
    •        endif
    •   (3): if(Condition-Expression-1) then 
      
    •          Commands1
    •        else if(Condition-Expression-2) then 
      
    •          Commands2
    •        else if(Condition-Expression-3) then 
      
    •          Commands3
    •        else 
      
    •          Commands4 
      
    •        endif 
      
    •   (4):switch结构:
    •       switch($Var)
    •           case value1:
    •               Commands1
    •               breaksw
    •           case value2: 
      
    •               Commands2 
      
    •               breaksw 
      
    •           default: 
      
    •               Commands3 
      
    •               breaksw 
      
    •           endsw 

      2、循环结构,有一下几种:

        (1):foreach 结构: 
      
    •       foreach var (Value-List)
    •          Commands 
      
    •       end 
      
    •   (2): while 结构:
    •        while(Condition-Expression) 
      
    •          Commands 
      
    •        end
    • Bash与Csh中的变量


      BASH中的变量

      1、定义:直接使用"变量名=值"的格式来定义,不区分字符串与数字值,统统认为是一个串.

      如: UserName=duane

      2、引用:在变量名前加上美元符号"$"即可引用该变量的值.

      如: echo My name is $UserName

      3、命令行参数:$n,(n的取值范围为0---9)

           $n: 表示第n个参数的值  

                   $0: 当前shell脚本的程序名称 

                   $*: 从n=1开始的所有命令行参数    

  •                $#: 命令行参数的个数
  •          4、从标准输入读取变量内容:
                  read Var
  •               echo $Var 
    • CSH中的变量

      1、字符串类型变量的定义:

      使用关键字set和"变量名=值"的格式定义,这种定义格式也可以用于数字值类型变量的定义. 
    •      如: set UserName=duane
    •     set Age=25

      2、数字值类型变量的定义:

      使用符号"@"来定义,"@"与变量名之间要有空格隔开. 
    •     如: @ Age=25

      3、引用:在变量名前加上美元符号"$"即可引用该变量的值.

      如: echo My name is $UserName,and age is $Age

      4、命令行参数$argv[n],(n的取值范围为0---9),可缩写为$n.

          $argv[0]: 当前shell脚本的程序名称,可缩写为$0.
    •     $argv: 从n=1开始的所有命令行参数,可缩写为$*. 
    •     $#argv: 命令行参数的个数,可缩写为$#.

      5、从标准输入读取变量内容:

           set Var=$<
    •      echo $Var

      6、取消变量的定义:

           unset Var
    •  
      Bash与Csh中的条件表达式 
    • BASH中的条件表达式

      Bash中测试条件表达式时可以使用test命令或"[]",test命令与"[]"的功能是等价的,bash把"[]"的实现连接到test命令 上的."[]"中的条件表达式与"["和"]"之间都必须有至少一个空格.如: [ 2==2 ],否则bash解释器不于通过执行.

      文件比较运算符

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


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

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


      CSH中的条件表达式

      字符串比较 功能

      == 是否相等,若相等返回真

      != 是否不等,若不等返回真

      =~ 字符串和模式进行测试是否相等(模式为任意正则表达式)

      !~ 字符串和模式测试是否不等(模式为任意正则表达式)

      文件测试 功能

      -e 测试文件是否存在

      -r 测试文件是否可读

      -w 测试文件是否可写

      -x 测试文件是否可执行

      -d 测试文件名是否为目录

      -f 测试文件是否为普通文件

      -o 测试文件是否被用户所拥有

      -z 测试文件是否为空

      逻辑运算符 功能

      && 与运算,两个条件同时满足

      || 或运算,有一个条件满足

      ! 取反

      注意:bash与csh都支持位运算

  • 7
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值