Linux shell编程 bash

    技术2022-05-20  32

    shell,应用程序,提供用户作为系统接口

    命令编程功能

    软件编程:编译类:源代码-->目标代码(编译),c,c++,JAVA脚本类:源代码,(解释器,bash(编译的))  面向应用   perl 5.8(面向过程),python(面向对象),ruby(on rail),shell

    shell,bsh(sh),bourn

    Bill Joy,csh --> tcsh

    Korn,ksh,GNU ksh

    bourn again shell bash,GPL,

    zshell 最新的,功能强大

    切换shell后,要切换回来要用exit

    cat:-n 显示行号-A,--show-all 显示特殊字符

       变量:(容器)命名的内存空间 严格区分变量类型

    bash 不会严格区分变量类型 脚本中任意变量类型都视为字符char 本地变量 set 环境变量 export 可被本shell,其它shell的进程应用 位置参数变量 特殊变量 引用:取变量值,"".'',``  "",弱引号  '',强引用  ``,命令引用 $() 变量替换 弱引用中会发生,强引用中不会发生  $变量名,${变量名} 只有引用时才加$ readonly 使一个变量变为常量 HISTSIZE,HISTFILE,HISTFILESIZE,HISTCONTROL PS1; PS2; PS3; PS4;

     export中         DISPLAY HOME LANG LOGNAME LS_COLORE OLDPWD PWD

     $? 命令的执行状态值 $$ 当前进程的进程号

      命令别名 只对当前shell有效: cd /etc/sysconfig/network-scripts alias cdnet='cd /etc/sysconfig/network-scripts' alias mntcd='mount /dev/cdrom /media/cdrom' alias 显示所有别名 unalias 取消别名

    编写脚本:#!/bin/bash 定义解释器shell

    Linux --> 继承了默认设置/etc/profile,/etc/profile.d/*,/etc/bashrc~/.bash_profile,~/.bashrc,~/.bash_history,~/.bash_logout(存放用户退出时做的动作)交互式: profile  <- 环境变量的定义非交互式: bashrc <- 别名等的定义

    alias cdnet='cd /eetc/sys...'

    source = . 配置文件后执行

    shell 算术运算:$((expression))$[expression]let

    +,-,/*,/,%,++,--,+=

    A=2B=3let A=$A+$B

    选择分支,三类if [];then  ..  ..  ..fi

    if [];then  ..  ..else  ..  ..fi

    if [];then  ..  ..elif [];then  ..elif [];then  ..else  ..fi

    嵌套

     

    循环分支

    whileforuntil

    for VAR in list;do  ..  ..  ..done

    let SUM=0for I in 1 2 3 4 5 6 7 8 9 10;do  let SUM+=$Idoneecho $SUM

    while [];do  ...done

    let I=1let SUM=0while [ $I -le 100 ];do  let SUM+=$I  let I++done

    let I=2let SUM=0while [ $I -le 100 ];do  let SUM+=$I  let I+=2done

    while read LINE;do   ...done < /etc/issue

    cat /etc/issue | while read LINE;do  ...done

     

    until [];do  ...done

     

    read 用来让系统跟用户交互

     

    面向对象:顺序选择循环

    getopts

    while getopts "ab" SWITCH(变量);do case $SWITCH in  a) echo "-a option." ;;  b) echo "-b option." ;;        /?) echo "Unkown option." ;; escadone


    最新回复(0)