您的位置:首页 > 运维架构 > Shell

perl和shell的语法不同之处---打卡19---ing

2014-07-06 12:37 218 查看
整个数组输出

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 正则

shell,perl的加法,数值比较

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

()中间判断

全是{}表示范围

文件读取;

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可以实现不加\n

print ,echo 自动加
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: