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