perl和shell的语法不同之处
catalogue
1 变量定义
2 括号
3 数值计算
4 数值和string比较
5 数组
6 正则,模式识别
=================
将shell和perl中的很多文章都可以归并到这里,变成一篇系统性的长文
eg:eq for shell is num compare, eq for perl is string compare
perl: elsif (else if 比较特殊), shell:elif
perl:define variable , $a=1; shell: a=1
perl:split /[_s]/ 可以多个条件,还可以正则
perl 类c语言,“;”结束
eq 也不同
perl: if ( $tmp[$#tmp] eq "LABEL" )
shell: if ( $tmp[$#tmp] -eq "LABEL" )
perl: 替换$string=~ s/[ ]/ /g; 将line中的 换成空格
=======================
整个数组输出
echo "${a[@]}"是打印全数组perl
print "@a"
数组长度
shell
cnt=${#a[@]}
perl
$d=@a
or
$#a 数组最后一个索引,即长度-1
数组,string长度的perl和shell的不同获取方法
perl
$a1=@a;
$b1=length($str)
shell
字符串长度
${#string}
expr length $string
数组和string的转化
shell
str=`ls $path |egrep "(^s)"`
a=$str 这是是将string 整体赋予数组的第一个元素
str=`ls *`
set -A a ${str} 这个是将整个数组分别赋予数组的各个元素
数组转string呢
b="${a[*]}"
perl的数组和string的转化呢
split()/joint()
string处理
shell用模式识别
perl用substr or 正则
perl $i++
shell expr ,(()),typeset -i i=0
shell是以string为基础的语言,数学运算要特殊处理
i=`expr $i+1`
((i=i+1)) 注意(())里面没有$
perl不需要
perl,shell 字符串和数值比较
都是分开
perl
eq 是string 比较 ,==是数值比较
shell
-eq 是数值比较,== 是string比较
shell语法 判断,循环,分支 if ,while/for , switch
[] 中间判断用.表示test
do表示范围
done
shell没有for()这种用法。
()中间判断
全是{}表示范围
文件读取;
perl
$a=<$fd>;按行读取
@a=<$fd>;全部读取
shell中没有open。所以没有句柄
只能用while read但是只能一行一行地读
while read line
do
prnt $line
done<1.txt
perl
while (<>) {
print $_;
}
钻石操作符
shell 没有钻石操作符.<>极少见,>写,<读,用于重定向
perl用钻石操作符读取文件
shell没有pop,push,shift,unshift
字符串连接
shell 字符串连接不用,直接写,or用""整体括起来
cwd=$cwd/email.txt
perl 需要用.连接
$cwd=$cwd.email.txt
perl退出程序
exit 1
退出子函数
return 1
shell 退出程序和子函数都是
return 1和exit 1 均可
perl
用chomp控制回车
shell
printf可以实现不加
print ,echo 自动加
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: 24种编程语言的Hello World程序
- 下一篇: 4个月边玩边学习PHP的学习心得