Bash与Csh的区别

zz :http://dangdanding.blog.163.com/blog/static/27992981201262595221896/

一、csh的while循环控制结构及if then:
#!/bin/csh -f
while ($#argv >= 1)
  if ("$1" == "-s") then
    shift
    if ($#argv >= 1) then
      set source = $1
      shift
    endif
  else if ("$1" == "-c") then
    set complex = "-text"
    shift
  else
    if ($?text == "0") then
      set text = $1
    endif
    shift
  endif
end

而bash的for结构的if then :
#!/bin/sh
for file in *
do
   if grep -q POSIX $file
   then
      echo $file
   fi
done
exit 0
即c语言风格的csh,如if endif, while end结对,而linux下的bash形式为 if  fi,  for  do done.

比较二:
csh的判断文件存在:
if (-e $MGDATA/${text}.chunks) then
  set input_files = `cat $MGDATA/${text}.chunks`
endif

而bash则是:
if test -f fred.c
then
...
fi
或者使用
if [ -f fred.c ]
then
...
fi
即方括号[]相当test命令的效果,注意:如果需要把then放在if的同一行,需要在方括号[]后加一个分号;
if [ -f fred.c ]; then
...
fi


zz:http://bdxnote.blog.163.com/blog/static/8444235200710991136102/

==========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都支持位运算


变量

变量:CSHBASH
给局部变量赋值set x=1x=1
给环境变量赋值 setenv NAME tomNAME=tom
export NAME 
引用(存取)变量echo $NAME  
$set var=hello          
$echo ${var},tom        
hello,tom
echo $NAME
var=hello  
$echo ${var},tom  
hello,tom 
专用变量:退出状态$status$?
把命令输出赋给变量   set d=`date`d=`date`  
d=$(date) 
   


各个shell的链接:


  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值