zoukankan      html  css  js  c++  java
  • Linux下Shell编程

    Linux的shell编程 


    1、什么是shell?
    当一个用户登录Linux系统之后,系统初始化程序init就为每个用户执行一个称为shell(外壳)的程序。
    shell就是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便执行程序的界面系统级程序,用户能够用shell来启动、挂起、停止甚至是编写一些程序。一般的Linux系统都将bash作为默认的shell。


    2、几种流行的shell
    眼下流行的shell有ash、bash、ksh、csh、zsh等,能够用以下的命令来查看shell的类型:
    echo $SHELL
    SHELL是一个环境变量,它记录用户所使用的shell类型。


    3、假设要运行该脚本,还必须使其可运行。
       chmod +x filename 
    然后。您能够通过输入: ./filename 来运行您的脚本。


    4、第一个shell程序

    $vi firstscript.sh


    echo “You are welcome to use base.” 
    echo “Current work directory is $PWD.”
    echo “You are $LOGNAME.”


    添加运行权限
    $chmod +x firstscript.sh
    開始执行程序:
    $./firstscript.sh


    5、简单的运算 
    $[expression]
    比如:
    var1=2
    var2=$[$var1*10+1]
    echo $var2    
    返回值为21。 


    -r文件名称:假设文件存在且可读则为真
    -w文件名称:假设文件存在且可写则为真
    -x文件名称:假设文件存在且可运行则为真
    -s文件名称:假设文件存在且至少有一个字符则为真
    -d文件名称:假设文件存在且为文件夹则为真
    -f文件名称:假设文件存在且为普通文件则为真
    -e文件名称:假设文件存在则为真
    -c文件名称:假设文件存在且为字符型特殊文件则为真
    -b文件名称:假设文件存在且为块特殊文件则为真


    -a 逻辑与
    -o 逻辑或 
    !  逻辑否


    String_operator 能够为:
    =:两个字符串相等
    !=:两个字符串不等
    -z:空串
    -n:非空串 
    -eq:数值相等
    -ne:数值不相等
    -gt:大于
    -lt:小于
    -le:小于等于
    -ge:大于等于 


    6、命令格式:read 变量名列表
    功能:从键盘或文件输入数据,赋值给变量。shell用空格作为变量之间的切割符。
    按回车键或者CTRL+D结束输入。
    当read从文件里读取数据时候是依照行读取的,即一次读取一行。假设没有碰到回车符,则一直读到文件末尾。

    读取数据的方式和从键盘输入时同样。  
    $read name sex age
    Yangailin male 25
    $echo  $name
    Yangailin
    $echo $sex
    male
    $echo $age
    25


    $read name sex
    Yangailin male 25
    $echo $name
    Yangailin
    $echo $sex
    male 25 


    $read name sex
    Yangailin male 25
    $echo $name
    Yangailin
    $echo $sex
    male 25 


    7、管道pipe 
    能够通过管道将一个命令的输出传递给还有一个命令作为输入。管道用竖杠|表示。它的语法格式例如以下:
    命令1  |  命令2 


    8、cat 命令 
    cat 命令能够用来显示文件内容,创建文件。还能够用来显示控制符号(用-v选项)。 
    cat命令一下子显示整个完整的文件。


    假设希望每次显示一页,能够使用more命令
     $cat filename1  filename2 > filename3   
    #该命令把两个文件连成一个文件filename3


    9、shell高级编程
    shell 同意用户在不同的命令之间。放上特殊的排列字符。用户假设须要在一行中给出多个命令需使用分号“;”。


    command1 ; command2  


    command1 && command2
    上面的命令表示仅仅有当 command1 正确执行完成后。才执行 command2 。 


    command1 || command2
    上面的命令表示仅仅有当 command1 执行失败才会执行 command2 。 


    在shell以下。一个新产生的进程能够通过用命令后面的符号“;”和“&”来分别曾经台和后台的方式来运行,语法例如以下: 
    command; 产生一个前台的进程,下一个命令须等该命令执行结束后才干输入。


    command & 产生一个后台的进程,此进程在后台执行的同一时候。能够输入其它的命令。 


    在shell中有两种命令分组的方法:“()”和“{}”,当用户在运行某个命令时不想让命令运行时对状态集合(如位置參数、环境变量、当前工作文件夹等)的改变影响到以下语句的运行时,就应该把这些命令放在圆括弧中
    {}用于将顺序运行的命令的输出结果用于还有一个命令的输入(管道方式)


    shell程序的调试主要是利用bash命令解释程序的选择项。

    调用bash的形式是:
      bash -选择项 shell程序文件名称
    -e:假设一个命令失败就马上退出
    -n:读入命令可是不运行它们
    -u:置换时把未设置的变量看作出错
    -v:当读入shell输入行时把它们显示出来
    -x:运行命令时把命令和它们的參数显示出来 


    调试shell程序的主要方法是利用shell命令解释程序的“-v”或“-x”选项来跟踪程序的运行。“-v”选择项使shell在运行程序的过程中,把它读入的每个命令行都显示出来。而“-x”选择项使shell在运行程序的过程中把它运行的每个命令在行首用一个“+”加上命令名显示出来。并把每个变量和该变量所取的值也显示出来。 

  • 相关阅读:
    前端杂七杂八
    用户数据分析
    hash表
    django杂七杂八
    redis事务
    CF1457D XOR-gun
    后缀数组学习笔记
    CF1439C Greedy Shopping
    P3320 [SDOI2015]寻宝游戏
    P5327 [ZJOI2019]语言
  • 原文地址:https://www.cnblogs.com/yxysuanfa/p/7127560.html
Copyright © 2011-2022 走看看