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=2
B=3
let A=$A+$B
选择分支,三类
if [];then
..
..
..
fi
if [];then
..
..
else
..
..
fi
if [];then
..
..
elif [];then
..
elif [];then
..
else
..
fi
嵌套
循环分支
while
for
until
for VAR in list;do
..
..
..
done
let SUM=0
for I in 1 2 3 4 5 6 7 8 9 10;do
let SUM+=$I
done
echo $SUM
while [];do
...
done
let I=1
let SUM=0
while [ $I -le 100 ];do
let SUM+=$I
let I++
done
let I=2
let SUM=0
while [ $I -le 100 ];do
let SUM+=$I
let I+=2
done
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." ;;
esca
done