自己总结的shell、perl和python的简单对比,欢迎交流!
 
【输出】
Shell echo "hello,world"
Perl print “hello,world”
Python print "hello,world"
【变量定义】
Shell
name=oudemen     echo $name
perl:

$name 标量   print $name

@names 数组
%name 哈希变量
Python:
name=oudemen       Print name
name=[] 普通链表,元素可变
name= ()固定数组,元素个数不可变
name={m,n} 哈希数组
【子程序/ 函数】
Shell

         function 函数名()

         {

                   语句块;

                   Return();
         }

调用函数名 arg1,agr2,…

perl:

         sub 子程序名{

                   my ($参数1$参数2$参数3)=@_;

                   语句块;
                   Return (返回值);
         }

调用子程序 &子程序名

Python:

         def 函数名(arg1,arg2,…argn):

          ……( 注意,一定要有缩进 [ 空格或者 tab])
          ……
         Return(x)

调用函数         函数名(arg1,arg2,…argn)

 
if 条件判断】
Shell

         if [条件表达式]

         then

                   条件为真command

         else

                   条件为假command

         fi
perl:

         if(条件表达式)

         {
                   表达式为真的语句块;
         }

或者         表达式为真的语句块 if 条件表达式;

或者         条件表达式&&表达式为真的语句块;

 

         if(条件表达式){

                   条件表达式为真时的语句块;
         }else{
                   条件表达式为假时的语句块;
         }

或者         条件表达式?表达式1:表达式2  [如果条件表达式为真,执行表达式1,否则执行表达式2]

 

         if(条件表达式1)

         {
                   条件表达式 1 为真时的语句块;

         }elsif(条件表达式2){

                   条件表达式 2 为真时的语句块;

         }elsif(条件表达式3){

                   条件表达式 3 为真时的语句块;
         }
         ……
         else{
                   所以条件表达式为假时的语句块;
         }
Python:

         if  条件表达式1:
                 
条件表达式1为真时的语句块

         elif 条件表达式2:
                 
条件表达式2为真时的语句块

         else:
                 
所以条件表达式为假时的语句块

unless 条件判断】
Shell :无
perl:

         unless(条件表达式){

                   条件表达式为假执行的语句块;
         }

或者         条件表达式为假执行的语句块 unless (条件表达式);、

或者         条件表达式 || 条件表达式为假执行的语句块

 
 

         unless(条件表达式){

                   条件表达式为假时的语句块;
         }else{
                   条件表达式为真时的语句块;
         }
Python:
【循环控制--while
Shell{break 跳出循环,continue 跳出本次循环}

         While[条件表达式]

         do

                   命令行

         done

perl{ last退出循环,next终止本次循环,适用perl所有循环}:

         while(条件表达式){

                   语句块;
         }

或者         {语句块}while(判别表达式)

         do
         {
                   语句块;

         }while(条件表达式) [while相比,do while保证语句块至少执行一次]

Python{break 跳出循环,continue 结束本次循环 }:

         While条件表达式:

                   语句块
         else:
                   语句块
【循环控制until
Shell

         until 条件表达式

         do

                   条件为假执行的语句块

         done
perl:

         until( 条件表达式)

         {
                   语句块
         }

或者         语句块 until(条件表达式)

        
         do
         {
                   语句块;

         }until(条件表达式)

Python:
【循环控制--for
Shell

         for((初始表达式;条件表达式;循环过程运算式));

         do

                   语句块;

         Done
        

         for i in 文件或数组

         do

                   语句块;

         Done
perl:

         for(初始表达式;条件表达式;循环过程运算式)

         {
                   语句块;
         }
        

         for 标量(数组变量)

         {
                   语句块;         
         }

         for  (数组变量)

         {
                   读取 $_, 处理数组相关的语句块;
         }
        

         foreach   标量(数组变量)

         {
                  语句块 ;
         }

         foreach   (数组变量)

         {
                  读取 $_, 处理数组相关的语句块;
         }
Python:
         for i in range 、数组或者字符串等
                   语句块(此行要缩进)