zz :http://dangdanding.blog.163.com/blog/static/27992981201262595221896/
一、csh的while循环控制结构及if then:
#!/bin/csh -f
while ($#argv >= 1)
end
而bash的for结构的if then :
#!/bin/sh
for file in *
do
done
exit 0
即c语言风格的csh,如if endif, while end结对,而linux下的bash形式为 if
比较二:
csh的判断文件存在:
if (-e $MGDATA/${text}.chunks) then
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都支持位运算
变量
变量: | CSH | BASH |
给局部变量赋值 | set x=1 | x=1 |
给环境变量赋值 | setenv NAME tom | NAME=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的链接: