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

第二章 shell程序设计

2013-03-30 22:11 363 查看
shell是用户与linux系统间接口的程序,它允许用户向操作系统输入需要执行的命令,许多强大的功能都能通过shell实现

1、重定向

      文件描述符:0 为一个程序的标准输入、1为标准输出、2为标准错误输出

      使用 > file.txt 可以将程序标准输出重定向到一个文件,默认情况下会将该文件的内容覆盖

              >>file.txt   则将程序标准输出追加到file.txt文件中

     如果想对标准错误输出进行重定向,则需要把想要重定向的文件描述符编号加在 >操作符前面

            $kill -HUP 1234 >killout.txt  2>killerr.txt    //将标准输出和标准错误输出分别重定向到不同文件中

            $kill -l   1234 >killouterr.txt  2>&1   //将标准输出和标准错误输出都重定向到同一个文件中

            $kill -l    1234 >/dev/null  2>&1      //将。。。。重定向到回收站(丢弃输出信息)

    同理,输入也可以重定向

            $more <killout.txt

2、摘要

      linux很少利用文件扩展名来决定文件的类型

3 、 shell语法:

     变量:字符串、数字、环境和参数

     条件:shell中的布尔值

     程序控制:if ,elif , for  ,while ,case

     命令列表

      函数

     shell内置命令

     获取命令的执行结果

     here文档

3.1   变量

     在shell中可以通过在变量名前加$符号来访问它的内容

     $value="Yes Dear"    //如果字符串里包含空格,就必须用引号把他们括起来,此外,等号两端不能有空格

     $read value    //使用read命令将用户的输入赋值给一个变量

     

    一般情况下脚本文件中的参数以空白字符分隔(空格,制表符或换行符),如果要在一个参数中包含一个或多个空白字符,那么就必须给参数加上引号。

 $  myvar="hi there"

   >echo $myvar

   >echo "$myvar"      //双引号,变量会被替换

  >echo '$myvar'       //单引号,变量不被替换

   >echo \$myvar     //   使用\  取消$符号的特殊意义

     hi there

   hi there

   $myvar

   $myvar

环境变量

    $IFS     //输入域分隔符,当shell读取输入的时候,它给出用来分隔单词的一组字符,通常是空格、制表符和换行符

    $0    //shell脚本的名字

    $#    //传递给脚本的参数个数

Conditions

     [ 与条件之间应当有空格(而给变量赋值的时候。。。)

   if [ -f fred.c ]; then

   set-gid 和set-uid 标志对shell脚本程序不起作用,它们只对可执行的二进制文件有用

shell在默认情况下认为所有的变量包含的都是字符串,foo=43  此处,43当成了字符串

until语句 

    until  conditions      //执行下面的statements 知道conditions成立  

    do 

        statements

    done

case 语句  //case将使用第一个匹配的模式,即使后面的模式有更精确的匹配,case不去查找最佳匹配

   case variable in      

pattern [ | pattern] ...) statements;;   //注意是双分号结尾

pattern [ | pattern] ...) statements;;

...

esac

     注意 * 通配符在引号中不起作用

AND列表

statement1 && statement2 && statement3 && ...   //下一个statement只有在前面所有的statement都执行成功的情况下                                                                                   //才执行,&&的作用是检查前一条命令的返回值

注意,在一个脚本程序中执行另外一个脚本程序要比执行一个函数慢得多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux程序设计