现在的位置: 首页 > 综合 > 正文

Linux脚本文件的生成

2013年09月11日 ⁄ 综合 ⁄ 共 4439字 ⁄ 字号 评论关闭
一、脚本文件的生成
#!/bin/bash
        操作命令
#注释
 
a、脚本文件的权限,要求脚本文件必须为具有可执行权限。
        chmod 755 脚本文件名
 

 
 

b、脚本文件的执行,要求脚本文件所在的路径应存在于$PATH路径中。如果不存在于该路径中,则脚本文件的执行方式为:#./脚本文件名

 

字符串替换命令
   1、tr,常用于管道操作中。对输出内容的特定字符串进行替换。
            #命令 | tr ‘原字符串’  ‘替换字符串’
            #命令  | tr -d ‘待删除字符串’    -d删除字符串
   2、按特定的字符串排序
           #sort [-tkn ]  文件名
                         -t 设定字段分割符
                         -k 设定选取的字段
                         -n 使用数字排序
 

 
 

   例:#cat /etc/passwd | sort -t : -k 3 -n

 

3、过滤重复的数据--uniq
            uniq用于对输出内容中,相邻的、重复的数据进行过滤,仅保留其中一个。
            #命令 | uniq
            #命令  | uniq -c 对找到的行进行统计
如果登录的BASH超过10个,则将前10个登录shell修改为csh。
 

4、双重定向—tee
语法:tee将上一个文件的标准输出重定向到文件,并将标准输出传递给下一个命令。
例:#cut -d:-f 7 /etc/passwd | tee file1 | cat file1
5、xargs :是将第一个命令的输出结果交给xargs后所带的命令进行处理。
例:ls a* | tee file1 | xargs rm –t
例2:文件删除提示
   read -p “请输入你要删除的文件:” A ;
         ls $A | tee file1 | xargs rm –f | echo `cut file1`已被删除 | echo ‘ ’ > file1
 

二、结构化控制语句 -- 条件控制语句
1if -- then --fi
语法:if 命令(如果命令的返回值为0,则执行then后的命令,否则、执行fi后的命令)
例:判断一个文件是否存在
      #!/bin/bash
   read -p “请输入你要查找的文件:” A
 if ls $A
    then echo “该文件存在”
         exit 0
    fi  
    exit 5 
 

例2:判断一个用户是否存在
     #!/bin/bash
   read -p “请输入你要查找的用户账号:” A
    if grep ^$A /etc/passwd
    then   echo “该用户存在”
        exit 0
     fi  
         exit 4
 

2if – then -- else -- fi
语法:if 命令(如果命令的返回值为0,则执行then后的命令,否则、执行else后的命令)
例:文件创建脚本
   #!/bin/bash
   read -p   “请输入你要创建的文件:” A
   if ls $A
 then   echo “该文件已存在”
   else 
      touch $A
 fi
 

3test判断
语法:test 判断条件(条件成立,则返回0,否则返回)
判断种类:
               n1 -ge n2 ; n1 >= n2
               n1 -le   n2 ; n1 <= n2
               n1 -ne n2 ; n1 不等于!= n2
               n1 -gt   n2 ; n1 > n2
               n1 -lt    n2 ; n1 < n2
例: #!/bin/bash
     if   test 6 -gt 7
    then echo “ok”
    else echo “error”
注:在if中可以将test替换为[ ]
 语法:if   [ 判断条件 ]
判断语句的符合检查条件
    语法:if [ 判断条件 ] && [ 判断条件 ]
文件比较
-d file ;检查file文件是否存在并且是一个目录
-e file ;检查文件或目录是否存在(好用)
-f file ;检查文件是否存在,并且是一个文件
-r file ;检查文件是否存在,并且是否可读
-s file;检查文件是否存在,并且是否不为空
-w file;检查文件是否存在,并且是否可写入
-x file;检查文件是否存在,并且是否可执行
 

例:输入成绩在60以下为不合格,60~80之间为合格,成绩在80~90之间良好,90~100之间优秀,0以下或100以上胡扯;
#!/bin/bash
 read -p “请输入成绩:” A
      elif [ $A –lt 60 ] && [ $A –ge 0 ]
         then echo “不及格”
       elif [ $A –ge 60 ] && [ $A –le 80 ]
         then echo “及格”
       elif [ $A -ge 81 ] && [ $A –le 90]
           then echo “良好”
       elif [ $A –ge 91 ] && [ $A –le 100 ]
          then echo “优秀”
                fi
注L封口规则,有几个if 就要在后面加几个fi。elif除外,封口时用一个就ok )
 

if的新建特性
语法: if (( 数字表达式 )) 

   
例:IP种类判别脚本

 
#!/bin/bash
 A = `ifconfig eth0 | head –n 2 | tail –n 1 | cut –d : -f2 | cut –d ‘ ’ –f 1`
     if (( $A >= 192 && $A <= 223 ))
       then echo “C类IP”
     elif (( $A <= 191 && $A >= 127 ))
         then echo “B类IP”…………fi
 

三、列表定义 – case
语法:case 变量名 in
                   变量值1 | 变量值2 )
              命令1
         ……
                 变量值n | 变量值n* )
               命令n 
           esac
 

例:#!/bin/bash
       read –p “where are you from :” A
        case $A in
         beijing | shanghai )
           echo “你住502房间” ;;
         shanxi | hebei )
            echo “你住在505” ;;
         guangdong | henan )
                echo “你住在510房间”
        esac
 

四、循环命令 – for
 for 用于创建一个值列表实现重复循环,每次循环使用值列表的一个值
语法:for 变量名 in 变量值列表
          do   
       命令1
            ……
        命令N
     done
 

例:判断根目录下哪些是文件哪些是目录
       #!/bin/bash
        for file in /boot/*
         do
          if   [ -d $file ]
          then 
             echo “ $file is a directary”
          elif [ -f $file ]
           then
               echo “is file”
           fi
        done
 

C式for循环
语法:for (( 变量名=变量值 ;匹配条件;变量操作))
             do
           命令1
                done
例:打印100个数
       #!/bin/bash
    for (( A=0;A<=100;A++))
      do
        echo $A
         done
 注:A=0(定义变量)A<=100(循环体执行条件) A++(变量操作)
 

for的嵌套循环
 例: 打印九九乘法表
 #!/bin/bash
     for (( L=1;L<=9;L++))
        do
          echo “$L* $R=`echo $[$L*$R]`”
    done 
      done
例2、打印三角形
 #!/bin/bash
     for ((h=1;h<=10;h++))
        do
        for ((sn=1;sh*2-1>=sn;sn++))
        do
       s=“$s `echo 0 `”
      done
         echo $s        s=
     done
 

五、while 循环
语法:while test判断(当test命令的返回值为“0”时执行循环体)
                do
                命令
                         done
While语句允许定义多条命令,每次循环均执行这些命令
例:#!/bin/bash
       var1=10
      while echo $var1
          [ $var1 –ge 0 ]
         do
           echo   “This is ”
         var1=$[$var1-1]
          done
 

六、until循环
语法:until test(当test命令返回值为非0时执行循环体)
                  do
                 命令
                    done
例:打印100个数
        #!/bin/bash
         var1=100
           until   [ $var1 –eq 0 ]
             do
              echo   $var1
                var1=$[$var1-1]
                  done
 

Shell脚本示例
例1、while循环体,以特定的格式输出系统中的用户,第一个用户是root,第二个用户是……
      #!/bin/bash
               while [ $n -le 1]
                 do
                for test in `cut -d: -f1 /etc/passwd`
                  do
                  echo “第$n个用户是:” $test
                 n=$[$n+1]
                 done
                done

抱歉!评论已关闭.